1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| procedure TFacturation.FormCreate(Sender: TObject);
var
NumeroClient,NumeroPiece,rqDerNumEch,rqCreerEcheance,rqLierPiece,rqMoisfacturation : string;
NumEcheance,DernierNumEcheance,NumMois,Annee : integer;
begin
ConnexionDATAFAC.Connected := true;
DataSetRemplirDBGrid.Active := false;
RVProject1.ProjectFile := ExtractFilePath(Application.ExeName) + 'Project4.rav';
//test de du mois en cour ( si janvier 2009 mois facturation decembre 2008 )
rqMoisfacturation := 'SELECT MOIS_FACTURATION,ANNEE_FACTURATION FROM PARAM';
ADOQueryMoisFacturation.Close;
ADOQueryMoisFacturation.SQL.Clear;
ADOQueryMoisFacturation.SQL.Add(rqMoisFacturation);
ADOQueryMoisFacturation.Open;
NumMois := ADOQueryMoisFacturation.Fields[0].Value;
Annee := ADOQueryMoisFacturation.Fields[1].Value;
if NumMois =1 then
begin
DataSetRemplirDBGrid.CommandText := 'SELECT P.TYPE_PIE||'+QuotedStr('2610')+'|| P.NUM_PIE as "Numéro Facture ",C.NUM_CLI as "Numéro client", C.RS_CLI as "Raison social", P.REFERENCE_CLIENT_PIE as "Référence" ,ECH.NB_MOIS_TOTAL as "Echeance totale",ECH.NB_MOIS_PAYE as "Nombre de mois payés",P.MONTANT_HT_PIE as "Montant HT" ';
DataSetRemplirDBGrid.CommandText := DataSetRemplirDBGrid.CommandText + ' FROM PIECE P JOIN CLIENT C ON P.NUM_CLI = C.NUM_CLI FULL JOIN ECHEANCE ECH ON P.NUM_ECH = ECH.NUM_ECH JOIN CONDITION_REGLEMENT CR ON P.NUM_CRE = CR.NUM_CRE ';
DataSetRemplirDBGrid.CommandText := DataSetRemplirDBGrid.CommandText + ' WHERE P.NUM_CRE = 83 and P.NUM_MPA = 62 and YEAR(DATE_ECHEANCE_PIE)= :AnneeFacturation and MONTH(DATE_ECHEANCE_PIE)= :MoisFacturation order by P.NUM_PIE';
DataSetRemplirDBGrid.Parameters.ParamByName('MoisFacturation').Value := 12;
DataSetRemplirDBGrid.Parameters.ParamByName('AnneeFacturation').Value := Annee-1;
end
else
begin
DataSetRemplirDBGrid.CommandText := 'SELECT P.TYPE_PIE||'+QuotedStr('2610')+'|| P.NUM_PIE as "Numéro Facture ",C.NUM_CLI as "Numéro client", C.RS_CLI as "Raison social", P.REFERENCE_CLIENT_PIE as "Référence" ,ECH.NB_MOIS_TOTAL as "Echeance totale",ECH.NB_MOIS_PAYE as "Nombre de mois payés",P.MONTANT_HT_PIE as "Montant HT" ';
DataSetRemplirDBGrid.CommandText := DataSetRemplirDBGrid.CommandText + ' FROM PIECE P JOIN CLIENT C ON P.NUM_CLI = C.NUM_CLI FULL JOIN ECHEANCE ECH ON P.NUM_ECH = ECH.NUM_ECH JOIN CONDITION_REGLEMENT CR ON P.NUM_CRE = CR.NUM_CRE ';
DataSetRemplirDBGrid.CommandText := DataSetRemplirDBGrid.CommandText + ' WHERE P.NUM_CRE = 83 and P.NUM_MPA = 62 and YEAR(DATE_ECHEANCE_PIE)= :AnneeFacturation and MONTH(DATE_ECHEANCE_PIE)= :MoisFacturation order by P.NUM_PIE';
DataSetRemplirDBGrid.Parameters.ParamByName('MoisFacturation').Value := NumMois-2;
DataSetRemplirDBGrid.Parameters.ParamByName('AnneeFacturation').Value := Annee;
end;
DataSetRemplirDBGrid.Active := true;
DataSetRemplirDBGrid.Open;
while not DataSetRemplirDBGrid.Eof do
begin
if DataSetRemplirDBGrid.Fields[4].IsNull or DataSetRemplirDBGrid.Fields[5].IsNull then
begin
//recupèrer du numéro de client sur lequel les champs
//ne sont pas renseignés
NumeroClient := DataSetRemplirDBGrid.Fields[1].AsString;
//recupèrer le numéro de la piece pour laquelle
//le numéro d'echeance n'est pas renseigné
NumeroPiece := copy(DataSetRemplirDBGrid.Fields[0].AsString,6,4);
//recupèrer le dernier numéro d'echeance
rqDerNumEch :='SELECT MAX(NUM_ECH) FROM ECHEANCE';
ADOQueryNumEch.Close;
ADOQueryNumEch.SQL.Clear;
ADOQueryNumEch.SQL.Add(rqDerNumEch);
ADOQueryNumEch.Open;
DernierNumEcheance := ADOQueryNumEch.Fields[0].AsInteger;
NumEcheance := DernierNumEcheance+1;
//creer une echeance pour cette facture
rqCreerEcheance := 'INSERT INTO ECHEANCE VALUES('+IntToStr(NumEcheance)+',-1,-1,'+NumeroClient+')';
ADOQueryCreerEch.Close;
ADOQueryCreerEch.SQL.Clear;
ADOQueryCreerEch.SQL.Add(rqCreerEcheance);
ADOQueryCreerEch.ExecSQL;
//faire le lien avec la piece
rqLierPiece :='UPDATE PIECE SET NUM_ECH = '+IntToStr(NumEcheance)+' WHERE NUM_PIE= '+NumeroPiece+' AND TYPE_PIE= '+QuotedStr('F')+'';
ADOQueryLierPiece.Close;
ADOQueryLierPiece.SQL.Clear;
ADOQueryLierPiece.SQL.Add(rqLierPiece);
ADOQueryLierPiece.ExecSQL;
end;
DataSetRemplirDBGrid.Next;
end;
//rafraichir le dbgrid
DataSetRemplirDBGrid.Active:=false;
DataSetRemplirDBGrid.Active:=true;
//cacher le colonnes
DBGridFacturation.Columns[0].Visible:=false;
DBGridFacturation.Columns[1].Visible:=false;
//dimensionnement de colones
DBGridFacturation.Columns[0].Width := 100;
DBGridFacturation.Columns[1].Width := 69;
DBGridFacturation.Columns[2].Width := 200;
DBGridFacturation.Columns[3].Width := 170;
DBGridFacturation.Columns[4].Width := 80;
DBGridFacturation.Columns[5].Width := 80;
DBGridFacturation.Columns[6].Width := 70;
end; |
Partager