aymenk
Messages postés
77
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2018
31 mars 2010 à 02:56
unit EdFactU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, StdCtrls, Mask, Grids, DBGrids, Buttons,db, ToolEdit,
CurrEdit, RXDBCtrl,
ImgList, DBActns, ActnList, RxDBComb, Menus,
RxLookup, wwDialog, Wwlocate,
LMDControl, LMDBaseControl, LMDBaseGraphicControl, LMDBaseLabel,
LMDCustomLabel, LMDLabel,bde,dbtables ;
type
TEdFactF = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
FactPanel: TPanel;
Label1: TLabel;
DBEdit1: TDBEdit;
Label3: TLabel;
Label4: TLabel;
NavFact: TDBNavigator;
DBGrid1: TDBGrid;
Label8: TLabel;
ImprimerBtn: TBitBtn;
NouveauBtn: TBitBtn;
ModifierBtn: TBitBtn;
ValiderBtn: TBitBtn;
AnnulerBtn: TBitBtn;
BitBtn5: TBitBtn;
DBDateEdit1: TDBDateEdit;
ActionList1: TActionList;
DataSetFirst1: TDataSetFirst;
DataSetLast1: TDataSetLast;
DataSetNext1: TDataSetNext;
DataSetPrior1: TDataSetPrior;
SeNAVButton1: TBitBtn;
SeNAVButton2: TBitBtn;
SeNAVButton3: TBitBtn;
SeNAVButton4: TBitBtn;
Label2: TLabel;
SeSkinButton1: TBitBtn;
SeNAVButton5: TBitBtn;
DataSetDelete1: TDataSetDelete;
SeSkinPopupMenu1: TPopupMenu;
SuupProd: TMenuItem;
InsereProduit: TMenuItem;
ImageList1: TImageList;
ModifProd: TMenuItem;
CB1: TRadioGroup;
DBLookupComboBox2: TDBLookupComboBox;
SeSkinButton2: TBitBtn;
wwLocateDialog1: TwwLocateDialog;
RxDBLookupCombo1: TRxDBLookupCombo;
TeRB: TDBRadioGroup;
SpeedButton1: TSpeedButton;
DBEdit2: TDBEdit;
Label9: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
DBCheckBox1: TDBCheckBox;
DBCheckBox2: TDBCheckBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ModifierBtnClick(Sender: TObject);
procedure NouveauBtnClick(Sender: TObject);
procedure AnnulerBtnClick(Sender: TObject);
procedure ValiderBtnClick(Sender: TObject);
procedure ImprimerBtnClick(Sender: TObject);
procedure PickProdNo(Sender: TObject);
procedure CalcTot;
procedure SeSkinButton1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SuupProdClick(Sender: TObject);
procedure SeSkinPopupMenu1Popup(Sender: TObject);
procedure InsereProduitClick(Sender: TObject);
procedure ModifProdClick(Sender: TObject);
procedure SeNAVButton4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton1Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure ModifierQte(Sender: TObject);
procedure ModifierPRIX(Sender: TObject);
private
WhatHappened:string[3]; { Déclarations privées }
public
{ Déclarations publiques }
end;
var
EdFactF: TEdFactF;
implementation
uses MDDu, FrCustPrev, SearchProdU, EdClientU, Modif_QteU, Modif_PrixU;
{$R *.DFM}
procedure TEdFactF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If MDD.TFact.State in ([dsInsert, dsEdit]) then
Begin
MessageDlg('Valider ou Annuler avant de Quitter...',mtInformation,[mbok],0);
Action:=Canone;
end;
MDD.TProd2.Filtered:=false;
//------------
MDD.TFactbyClient.close;
MDD.TFactbyClient.open;
MDD.TFactbyClient.locate('CodFact',MDD.TFactCodCLI.Value,[])
//--------------
end;
procedure TEdFactF.ModifierBtnClick(Sender: TObject);
begin
Screen.Cursor := crSQLWait;
ModifierBtn.Enabled:=False; SeNAVButton1.Enabled:=false;SeNAVButton5.Enabled:=false;
NouveauBtn.Enabled:=False; SeNAVButton2.Enabled:=false;
ValiderBtn.Enabled:=True; SeNAVButton3.Enabled:=false;
AnnulerBtn.Enabled:=True; SeNAVButton4.Enabled:=false;
FactPanel.Enabled:=True; //TeRB.Enabled:=true;
NavFact.Enabled:=False;
ImprimerBtn.Enabled:=False;
DBGrid1.ReadOnly:=False;
MDD.TLigFact.CachedUpdates:=False; MDD.TFact.CachedUpdates:=False;
MDD.TLigFact.CachedUpdates:=True; MDD.TFact.CachedUpdates:=True;
MDD.TFact.Edit;
//---------------------
//Mdd.TProd2.Filter :'codTVA '+mdd.TFactCodTVA.AsString;
// mdd.TProd2.Filtered :=true;
//---------------------
WhatHappened:='MDF';
dbgrid1.DataSource := nil;
mdd.AjouterAuStockMDFac; dbgrid1.Columns[0].ReadOnly := true;
mdd.UpdateResteClient();
mdd.Update_Suivi;
dbgrid1.DataSource := MDD.DLigFact;
Screen.Cursor := crDefault;
end;
procedure TEdFactF.NouveauBtnClick(Sender: TObject);
begin
ModifierBtn.Enabled:=False; SeNAVButton1.Enabled:=false;SeNAVButton5.Enabled:=false;
NouveauBtn.Enabled:=False; SeNAVButton2.Enabled:=false;
ValiderBtn.Enabled:=True; SeNAVButton3.Enabled:=false;
AnnulerBtn.Enabled:=True; SeNAVButton4.Enabled:=false;
FactPanel.Enabled:=True; //TeRB.Enabled:=true;
NavFact.Enabled:=False;
ImprimerBtn.Enabled:=False;
DBGrid1.ReadOnly:=False;
MDD.TLigFact.CachedUpdates:=False; MDD.TFact.CachedUpdates:=False;
MDD.TLigFact.CachedUpdates:=True; MDD.TFact.CachedUpdates:=True;
MDD.TFact.Insert;
WhatHappened:='NEW';
RxDBLookupCombo1.DropDown;
RxDBLookupCombo1.SetFocus; dbgrid1.Columns[0].ReadOnly := true;
end;
procedure TEdFactF.AnnulerBtnClick(Sender: TObject);
begin
dbgrid1.DataSource := nil;
Screen.Cursor := crSQLWait;
MDD.TFact.CancelUpdates;
MDD.TLigFact.CancelUpdates;
mdd.TProd2.Filtered :=false;
MDD.TLigFact.Refresh;
if WhatHappened ='MDF' then mdd.SoustraireDuStockMDFac;
MDD.TLigFact.CachedUpdates:=false;
MDD.TFact.CachedUpdates:=false;
//----------------------
ModifierBtn.Enabled:=True; SeNAVButton1.Enabled:=true;SeNAVButton5.Enabled:=true;
NouveauBtn.Enabled:=True; SeNAVButton2.Enabled:=true;
ValiderBtn.Enabled:=False; SeNAVButton3.Enabled:=true;
AnnulerBtn.Enabled:=False; SeNAVButton4.Enabled:=true;
FactPanel.Enabled:=False; //TeRB.Enabled:=false;
NavFact.Enabled:=True;
ImprimerBtn.Enabled:=True;
DBGrid1.ReadOnly:=TRue;
dbgrid1.DataSource := MDD.DLigFact;
Screen.Cursor := crDefault;
end;
procedure TEdFactF.ValiderBtnClick(Sender: TObject);
begin
dbgrid1.DataSource := nil;
Screen.Cursor := crSQLWait;
Begin
If (MDD.TFactCodFact.AsString='')
Or(MDD.TFactCodCli.asstring='')
Or(MDD.TFactDatFACT.Asstring='') then
begin
MessageDlg('Completez l''entête de la facture S.V.P...',mtInformation,[mbok],0);
SysUtils.Abort;
end;
End;
MDD.DBase.StartTransaction;
try
//////////// showmessage('1');
(* try
MDD.TFact.Post;
except
showmessage('Erreur de manipulation l''opération va être Annuler...') ;
AnnulerBtnClick(Sender);
end; *)
//////////// showmessage('2');
MDD.TFact.ApplyUpdates;
MDD.TLigFact.ApplyUpdates;{tenter d'écrire les mises à jours dans la base de donnés};
MDD.DBase.Commit; {en cas de succès, valider les modifications};
except
MDD.DBase.Rollback; {en cas d'échec, annuler les modifications};
raise;{déclencher l'exception pour empêcher l'appel de CommitUpdates!}
end;
//////////// showmessage('3');
MDD.TLigFact.CommitUpdates; {En cas de succès, effacer le cache}
//////////// showmessage('4');
//MDD.TFact.ApplyUpdates; {En cas de succès, effacer le cache}
MDD.TFact.CommitUpdates;
//////////// showmessage('5');
//----------------------------------------------------------------
if WhatHappened ='MDF' then mdd.SoustraireDuStockMDFac else mdd.SoustraireDuStock;
//----------------------------------------------------------------
ModifierBtn.Enabled:=True; //TeRB.Enabled:=false;
NouveauBtn.Enabled:=True; SeNAVButton1.Enabled:=true;
ValiderBtn.Enabled:=False; SeNAVButton2.Enabled:=true;
AnnulerBtn.Enabled:=False; SeNAVButton3.Enabled:=true;
FactPanel.Enabled:=False; SeNAVButton4.Enabled:=true;
NavFact.Enabled:=True; SeNAVButton5.Enabled:=true;
ImprimerBtn.Enabled:=True;
DBGrid1.ReadOnly:=TRue;
CalcTot;//proc
//***************
mdd.TProd2.Filtered :=false;
MDD.TLigFact.Refresh;
MDD.TLigFact.CachedUpdates:=false;
MDD.TFact.CachedUpdates:=false;
mdd.UpdateResteClient();
mdd.Update_Suivi;
//***************
Check(DbiSaveChanges(MDD.TLigFact.Handle));
Check(DbiSaveChanges(MDD.TFact.Handle));
Check(DbiSaveChanges(MDD.TClient.Handle));
Check(DbiSaveChanges(MDD.TProd.Handle));
dbgrid1.DataSource := MDD.DLigFact;
Screen.Cursor := crDefault;
end;
procedure TEdFactF.ImprimerBtnClick(Sender: TObject);
var St:string;
begin
MDD.calcoTTC;
//QrF.QrFact.Preview;
St:=ExtractFilePath(ParamStr(0));
case cb1.ItemIndex of
0:MDD.frRepFact.LoadFromFile(St+'Reports\facture.knha');
1:MDD.frRepFact.LoadFromFile(St+'Reports\Proforma.knha');
2:MDD.frRepFact.LoadFromFile(St+'Reports\Service.knha');
3:MDD.frRepFact.LoadFromFile(St+'Reports\BonL.knha');
end;
FrCustPrevF:=TFrCustPrevF.create(Application);
MDD.frRepFact.Preview := FrCustPrevF.frPreview1;
if MDD.frRepFact.PrepareReport then
begin
MDD.frRepFact.ShowPreparedReport;
FrCustPrevF.ShowModal;
end;
FrCustPrevF.free;
end;
procedure TEdFactF.PickProdNo(Sender: TObject);
begin
if //(DBGrid1.SelectedField = MDD.TLigFactLibelle) and
(DBGrid1.ReadOnly=false) then
begin
if MDD.TLigFactCodPROD.Value <> 0 then
MDD.TProd2.Locate('CodProd',MDD.TLigFactCodPROD.Value,[]) else
MDD.TProd2.first;//;
if SearchProdF.ShowModal = mrOk then
begin
if (mdd.TParamoVerifQte.value = true) then
begin
if (MDD.TProd2QuantSTOK.Value >0) and (MDD.TProd2QuantSTOK.Value >=MDD.TLigFactQuantite.Value ) then
begin
MDD.TLigFact.Edit;
MDD.TLigFactCodPROD.Value := MDD.TProd2CodPROD.Value;
MDD.TLigFactNPrix.Value:=MDD.TProd2PrixUnit.Value;
end
else
begin
showmessage('Stock Insuffisant...');
MDD.TLigFact.cancel;
end;
end else
begin
MDD.TLigFact.Edit;
MDD.TLigFactCodPROD.Value := MDD.TProd2CodPROD.Value;
MDD.TLigFactNPrix.Value:=MDD.TProd2PrixUnit.Value;
end;
end else MDD.TLigFact.cancel;
end;
end;
procedure TEdFactF.CalcTot;
var TH1,TH,TTC,TVA1,TVA :double;
begin
TH:=0; TVA:=0;
with MDD do
begin
TLigFact.first;
while not TLigFact.eof do
begin
TH1:=TLigFactHT.value;
TVA1:= Trunc(TH1*TLigFactTVAone.Value)/100;
TH:=TH+TH1;
TVA:= TVA+TVA1;
TLigFact.Next;
end;
//TVA:=Trunc((TH*TFactTVA.Value/100)*100)/100;
if mdd.TFactExonere.Value then
TVA := 0.;
TTC:= TVA + TH;
label5.Caption:=format('HT: %8.2n DA',[TH]);
label6.Caption:=format('TVA: %8.2n DA',[TVA]);
label7.Caption:=format('TTC: %8.2n DA',[TTC]);
end;
end;
procedure TEdFactF.SeSkinButton1Click(Sender: TObject);
begin
CalcTot
end;
procedure TEdFactF.FormShow(Sender: TObject);
begin
//TeRB.Enabled:=false;
end;
procedure TEdFactF.SuupProdClick(Sender: TObject);
begin
mdd.TLigFact.Delete;
end;
procedure TEdFactF.SeSkinPopupMenu1Popup(Sender: TObject);
begin
if DBGrid1.ReadOnly = true then
begin
SuupProd.Enabled:=false ; InsereProduit.Enabled:=false ;
ModifProd.Enabled:=false ;
end else
begin
SuupProd.Enabled:= true; InsereProduit.Enabled:=true;
ModifProd.Enabled:=true;
end;
end;
procedure TEdFactF.InsereProduitClick(Sender: TObject);
begin
mdd.TLigFact.Last;
mdd.TLigFact.Insert;
PickProdNo(Sender)
end;
procedure TEdFactF.ModifProdClick(Sender: TObject);
begin
mdd.TLigFact.edit;
PickProdNo(Sender)
end;
procedure TEdFactF.SeNAVButton4MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
CalcTot;
end;
procedure TEdFactF.SpeedButton1Click(Sender: TObject);
begin
EdClientF:=TEdClientF.create(Application);
EdClientF.ShowModal;
EdClientF.free
end;
procedure TEdFactF.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var Quantite,deCombien,PosX,PosY:integer;
begin
PosX:= left+290; PosY:= Top +220 ; // help
//if key = VK_F1 then AideraccourciClick(Sender); EdFactF.left+DBGrid1.Left EdFactF.Top+ DBGrid1.Top
if key = VK_F2 then if NouveauBtn.Enabled then NouveauBtnClick(Sender);
if key = VK_F3 then if ModifierBtn.Enabled then ModifierBtnClick(Sender);
if key = VK_F4 then if ValiderBtn.Enabled then ValiderBtnClick(Sender);
if (key = VK_F5) and (AnnulerBtn.Enabled) then InsereProduitClick(Sender);
if key = VK_F6 then SeSkinPopupMenu1.Popup(PosX,PosY);
if key = VK_F7 then if ValiderBtn.Enabled then ModifierQte(Sender);
if key = VK_F8 then if ValiderBtn.Enabled then ModifierPRIX(Sender);
if key = VK_F9 then SeSkinButton1Click(Sender);
if key = VK_F10 then close;
if key = VK_ESCAPE then if AnnulerBtn.Enabled then AnnulerBtnClick(Sender);
if (ssCtrl in Shift) and (key=ord('P')) then ImprimerBtnClick(Sender);
end;
procedure TEdFactF.FormKeyPress(Sender: TObject; var Key: Char);
//var s:string; i:integer;
begin
if Key = #13 then
if not (ActiveControl is TDBGrid) and (not RxDBLookupCombo1.IsDropDown) then
begin
key := #0;
PostMessage(handle, WM_NEXTDLGCTL, 0, 0);
end
else if (ActiveControl is TDBGrid) then { if it is a TDBGrid }
with TDBGrid(ActiveControl) do
if selectedindex <(fieldcount -1) then { increment the field }
selectedindex := selectedindex +1
else selectedindex := 0;
DBGrid1.SelectedField
(* if (Key = #13) and (not RxDBLookupCombo1.IsDropDown) then
begin
key := #0;
PostMessage(handle, WM_NEXTDLGCTL, 0, 0);
end;*)
end;
procedure TEdFactF.ModifierQte(Sender: TObject);
begin
MDD.TProd.Locate('CodProd',MDD.TLigFactCodPROD.Value,[]) ;//========W> NEW
Application.CreateForm(TModif_QteF, Modif_QteF);
Modif_QteF.FlatEdit1.Text:= mdd.TLigFactQuantite.AsString;
Modif_QteF.ShowModal;
if Modif_Qtef.ModalResult = mrOK then
if mdd.TFact.State in (DsEditModes) then
begin
if mdd.TLigFactLibelle.AsString <> '' then
begin
if Mdd.TParamoverifQte.value =true then
begin//**
if strtofloat(Modif_QteF.FlatEdit1.Text) <= mdd.TProdQuantSTOK.Value then
begin
mdd.TLigFact.Edit;
mdd.TLigFactQuantite.AsString := Modif_QteF.FlatEdit1.Text;
end else
showmessage('Stock Insuffisant');
end else //**
begin//**
mdd.TLigFact.Edit;
mdd.TLigFactQuantite.AsString := Modif_QteF.FlatEdit1.Text;
end;//**
end;
end;
end;
procedure TEdFactF.ModifierPRIX(Sender: TObject);
begin
Application.CreateForm(TModif_PrixF, Modif_PrixF);
Modif_PrixF.FlatEdit1.Text:= mdd.TLigFactNPrix.AsString;
Modif_PrixF.ShowModal;
if Modif_PrixF.ModalResult = mrOK then
if mdd.TFact.State in (dsEditModes) then
begin
if mdd.TLigFactLibelle.AsString <> '' then
begin//**
mdd.TLigFact.Edit;
mdd.TLigFactNPrix.AsString := Modif_PrixF.FlatEdit1.Text;
end;//**
end;
end;
end.