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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
procedure TN_Pointage.BitBtn2Click(Sender: TObject);
var Sss, ret, net, SssP, retP, netP, taux, retabs, retabsP, tauxP, Sb, SbP,conso, consoP:real;
var code,s:string;
var nbj, nbjP:integer;
begin
if dcpe.Taux.Active = false then
dcpe.Taux.Active := true;
dcpe.pointage.IndexName:='';
if dcpe.pointage.Active = false then
dcpe.pointage.Active :=true;
if dcpe.Paie.Active = false then
dcpe.Paie.Active:=true;
if dcpe.Contrat.Active = false then
dcpe.Contrat.Active :=true;
dcpe.pointage.First;
while not dcpe.pointage.Eof do
begin
code:=dcpe.pointage.Fields[1].AsString;
if dcpe.Paie.FindKey([combobox3.text+'/'+combobox2.text+'/'+code]) = false then
if dcpe.Contrat.FindKey([dcpe.pointage.fields[1].asstring])then
begin
try
nbj:=dcpe.pointage.Fields[8].Asinteger;
nbjP:=dcpe.pointage.Fields[9].Asinteger;
Sb:=dcpe.Contrat.Fields[22].AsFloat;
SbP:=dcpe.Contrat.Fields[28].AsFloat;
conso:=dcpe.Contrat.Fields[33].AsFloat;
consoP:=dcpe.Contrat.Fields[42].AsFloat;
//----------------PAIE CONTRAT INITIAL MOIS COMPLET--------
if ((nbj = 22)and(nbjP = 0)) then
begin
sss:= Sb;
ret := Sss * 9 /100;
net := Sss - ret;
SssP:=0; retP:=0; netP:=0;
end
//----------------PAIE CONTRAT PROROG MOIS COMPLET-------
else
if ((nbj = 0)and(nbjP = 22)) then
begin
sssP:= SbP;
retP := SssP * 9 /100;
netP := SssP - retP;
Sss:=0; ret:=0; net:=0;
end
//----------------PAIE CONTRAT INIATIAL INCOMPLET ---------
else
if ((nbj > 0) and(nbj < 22)and(nbjP = 0)) then
begin
if Dcpe.Taux.FindKey([Sb])then
taux:=dcpe.Taux.Fields[1].AsFloat;
//retabs:= (22-nbj)* 8 * taux;
sss:=nbj * 8 * taux;
ret:= sss * 9/100;
str(ret:10:2,s);
ret:=strtofloat(s);
net:= sss - ret;
SssP:=0;retP:=0;netP:=0;
end
//----------------PAIE CONTRAT PROROG INCOMPLET ----------
else
if ((nbj = 0)and(NbjP > 0)and(NbjP < 22)) then
begin
if Dcpe.Taux.FindKey([SbP])then
taux:=dcpe.Taux.Fields[1].AsFloat;
//retabs:= (22-nbjP) * 8 * taux;
sssP:=nbjP * 8 * taux;
retP:= sssP* 9/100;
str(retP:10:2,s);
retP:=strtofloat(s);
netP:= sssP - retP;
Sss:=0; ret:=0; net:=0;
end
//---------------PAIE MOITIE INITIAL MOITIE PROROG----------
else
if ((nbj < 22)and(nbj > 0)and(nbjP < 22)and(nbjP > 0 )) then
begin
//--------------moitie initial--------------------
if Dcpe.Taux.FindKey([Sb])then
taux:=dcpe.Taux.Fields[1].AsFloat;
sss:=nbj * 8 * taux;// Sb - retabs;
ret:= sss* 9/100;
str(ret:10:2,s);
ret:=strtofloat(s);
net:= sss - ret;
//--------------moitie prorog-------------------
if Dcpe.Taux.FindKey([SbP])then
tauxP:=dcpe.taux.Fields[1].AsFloat;
sssP:=nbjP * 8 * taux;//SbP - retabsP;
retP:= sssP* 9/100;
str(retP:10:2,s);
retP:=strtofloat(s);
netP:= sssP - retP;
end;
finally
dcpe.Paie.Append;
dcpe.Paie.Edit;
dcpe.Paie.FieldValues['NumPay']:=combobox3.text+'/'+combobox2.text+'/'+code;
dcpe.Paie.FieldValues['NumEmp']:= code;
dcpe.Paie.FieldValues['Prog']:= combobox1.Text;
dcpe.Paie.FieldValues['Mois']:= strtoint(combobox3.Text);
dcpe.Paie.FieldValues['Annee']:= strtoint(combobox2.Text);
dcpe.Paie.FieldValues['Sb']:= Sb;
dcpe.Paie.FieldValues['Nbj']:= nbj;
dcpe.Paie.FieldValues['Sss']:= Sss;
dcpe.Paie.FieldValues['Ret']:= ret;
dcpe.Paie.FieldValues['Net']:= net;
dcpe.Paie.FieldValues['SbP']:= SbP;
dcpe.Paie.FieldValues['NbjP']:= nbjP;
dcpe.Paie.FieldValues['SssP']:= SssP;
dcpe.Paie.FieldValues['RetP']:= retP;
dcpe.Paie.FieldValues['NetP']:= NetP;
dcpe.Paie.FieldValues['Conso']:= conso + Sss;
dcpe.Paie.FieldValues['ConsoP']:= ConsoP+SssP;
//dcpe.Paie.AppendRecord([, ]);
//dcpe.paie.edit;
dcpe.paie.Post;
dcpe.Contrat.Active := false;
dcpe.Contrat.Active := true;
if dcpe.Contrat.FindKey(['code'])then
begin
dcpe.Contrat.Edit;
dcpe.Contrat.Fields[33].AsFloat := dcpe.Contrat.Fields[33].AsFloat + Sss;
dcpe.Contrat.Fields[42].AsFloat := dcpe.Contrat.Fields[42].AsFloat + SssP;
dcpe.Contrat.Post;
end;
if dcpe.Contrat.Active = false then
dcpe.Contrat.Active :=true;
end;
end;
dcpe.pointage.delete ;
end;
messageDlg('Operation Fini ', mtInformation, [mbOk], 0);
bitbtn1.SetFocus;
end; |
Partager