📄 u_prov_agenti.pas
字号:
Importo_pagato := 0 ;
while (not Econto.Eof) and (Econto.FieldByName('Documento').AsString = Tdoc.FieldByName('Documento').AsString) do
begin
Importo_pagato := Importo_pagato + Econto.FieldByName('Dare E').AsFloat ;
Econto.Next ;
end ;
Percentuale_pagata := (Importo_pagato * 100)/(Tdoc.FieldByName('Totale E').AsFloat) ;
if Percentuale_pagata = 0 then
begin
importo := 0 ;
qta_riga := 0 ;
end
else
begin
if ok then
Percentuale_pagata := Percentuale_pagata - Tdoc.FieldByName('Parziale Provv agente2').AsFloat
else
Percentuale_pagata := Percentuale_pagata - Tdoc.FieldByName('Parziale Provvigione').AsFloat ;
importo := importo * (Percentuale_pagata/100) ;
// qta_riga := qta_riga * (Percentuale_pagata/100) ; LA PERCERNTUALE VIENE CONSIDERATA NEL CALCOLO DELLA PROVVIGIONE
end ;
end ;
end ; // Tipo provvigione = P
// FINE CALCOLO IMPORTO
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ddoc.Edit ;
Ddoc.FieldByName('Provvigione').AsFloat := 0 ;
// Stefano 28/01/2002
if (Ag_premio.FindKey([Agente.FieldByName('Codice').AsString,Sog.FieldByName('Tipo Rapporto').AsString,Ddoc.FieldByName('Articolo interno').AsString])) then
begin
// Provvigione calcolata con Ag_prov_art.db
if importo <> 0 then
begin
// Ddoc.Edit ;
if (sog.FieldByName('Prima provvigione').AsBoolean) or (Tdoc.FieldByName('Primo Doc').AsBoolean) then
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_premio.FieldByName('Primo premio').AsFloat/100))
else
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_premio.FieldByName('Premio').AsFloat/100)) ;
// Provvigione_doc := Provvigione_doc + Ddoc.FieldByName('Provvigione').AsFloat ;
// Nel caso sia stato impostato un importo come premio
if (Ag_Premio.FieldByName('Importo').AsCurrency >0) or (Ag_Premio.FieldByName('Primo Importo').AsCurrency > 0) then
begin
if ({(sog.FieldByName('Prima provvigione').AsBoolean) or} (Tdoc.FieldByName('Primo Doc').AsBoolean)) and (Ag_Premio.FieldByName('Primo Importo').AsCurrency > 0) then
Importo_dettaglio := Importo_dettaglio + (Ag_Premio.FieldByName('Primo Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100)
else
Importo_dettaglio := Importo_dettaglio + (Ag_Premio.FieldByName('Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100) ;
end ;
// Ddoc.Post ;
Calcolata := True ;
end ;
end ;
// Stefano 28/01/2002
Provvigione_x_articolo := False ;
if {(Provvigione_x_articolo) and} (Ag_prov_art.FindKey([Agente.FieldByName('Codice').AsString,Sog.FieldByName('Tipo Rapporto').AsString,Ddoc.FieldByName('Articolo interno').AsString])) then
begin
// Provvigione calcolata con Ag_prov_art.db
if importo <> 0 then
begin
premio := false ;
// Ddoc.Edit ;
if (sog.FieldByName('Prima provvigione').AsBoolean) or (Tdoc.FieldByName('Primo Doc').AsBoolean) then
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_prov_art.FieldByName('Prima provv').AsFloat/100))
else
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_prov_art.FieldByName('Provvigione').AsFloat/100)) ;
// Provvigione_doc := Provvigione_doc + Ddoc.FieldByName('Provvigione').AsFloat ;
// Nel caso sia stato impostato un importo come provvigione
if (Ag_prov_art.FieldByName('Importo').AsCurrency > 0) or (Ag_prov_art.FieldByName('Primo Importo').AsCurrency > 0) then
begin
if ({(sog.FieldByName('Prima provvigione').AsBoolean) or} (Tdoc.FieldByName('Primo Doc').AsBoolean)) and (Ag_prov_art.FieldByName('Primo Importo').AsCurrency > 0) then
Importo_dettaglio := Importo_dettaglio + (Ag_prov_art.FieldByName('Primo Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100)
else
Importo_dettaglio := Importo_dettaglio + (Ag_prov_art.FieldByName('Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100) ;
end ;
// Ddoc.Post ;
Calcolata := True ;
Provvigione_x_articolo := True ;
end ;
end ;
Ag_prov_trovato := False ;
if Ag_prov.FindKey([Agente.FieldByName('Codice').AsString,Sog.FieldByName('Tipo rapporto').AsString,Art.FieldByName('Tipo articolo').AsString]) then
Ag_prov_trovato := True
else
begin
if Ag_prov.FindKey([Agente.FieldByName('Codice').AsString,Sog.FieldByName('Tipo rapporto').AsString]) then
while (not Ag_prov.Eof) and (Ag_prov.FieldByName('Tipo articolo').AsString = '') do
begin
Ag_prov.Next ;
end ;
if (Ag_Prov.FieldByName('Agente').AsString = Agente.FieldByName('Codice').AsString) and
(Ag_Prov.FieldByName('Tipo soggetto').AsString = Sog.FieldByName('Tipo rapporto').AsString) and
(Ag_Prov.FieldByName('Tipo articolo').AsString = '') then
Ag_prov_trovato := True ;
end ;
if (provvigione_x_articolo) then
ag_prov_trovato := False ;
provvigione_x_tipo_articolo := False ;
if Ag_prov_trovato then
begin
// Provvigione calcolata con Ag_provvigioni.db
if importo <> 0 then
begin
// Ddoc.Edit ;
if ({(sog.FieldByName('Prima provvigione').AsBoolean) or }(Tdoc.FieldByName('Primo Doc').AsBoolean)) and (Ag_prov.FieldByName('Prima Provv').AsFloat > 0) then
begin
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_prov.FieldByName('Prima Provv').AsFloat/100)) ;
end
else
begin
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_prov.FieldByName('Provvigione').AsFloat/100)) ;
end ;
// Provvigione_doc := Provvigione_doc + Ddoc.FieldByName('Provvigione').AsFloat ;
// Nel caso sia stato impostato un importo come provvigione
if Ag_prov.FieldByName('Importo').AsCurrency > 0 then
begin
if {(sog.FieldByName('Prima provvigione').AsBoolean) or }(Tdoc.FieldByName('Primo Doc').AsBoolean) then
Importo_dettaglio := Importo_dettaglio + (Ag_prov.FieldByName('Primo Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100)
else
Importo_dettaglio := Importo_dettaglio + (Ag_prov.FieldByName('Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100) ;
end ;
// Ddoc.Post ;
Calcolata := True ;
provvigione_x_tipo_articolo := True ;
end ;
end ;
// Provvigione calcolata con Ag_doc.db
if (not provvigione_x_articolo) and (not provvigione_x_tipo_articolo) and ((Ag_doc.FieldByName('Provvigione generale').AsInteger <> 0)or (Ag_doc.FieldByName('Prima Provv').AsInteger <> 0)) then
begin
if importo <> 0 then
begin
// Ddoc.Edit ;
if {(sog.FieldByName('Prima provvigione').AsBoolean) or} (TDoc.FieldByName('Primo Doc').AsBoolean) then
begin
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_Doc.FieldByName('Prima Provv').AsFloat/100));
end
else
begin
Ddoc.FieldByName('Provvigione').AsFloat := Ddoc.FieldByName('Provvigione').AsFloat + (Importo * (Ag_Doc.FieldByName('Provvigione generale').AsFloat/100)) ;
end ;
// Provvigione_doc := Provvigione_doc + Ddoc.FieldByName('Provvigione').AsFloat ;
// Nel caso sia stato impostato un importo come provvigione
if (Ag_doc.FieldByName('Importo').AsCurrency > 0) or (Ag_Doc.FieldByName('Primo Importo').AsCurrency > 0) then
begin
if ({(sog.FieldByName('Prima provvigione').AsBoolean) or }(Tdoc.FieldByName('Primo Doc').AsBoolean)) and (Ag_Doc.FieldByName('Primo Importo').AsCurrency > 0) then
Importo_dettaglio := Importo_dettaglio + (Ag_Doc.FieldByName('Primo Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100)
else
Importo_dettaglio := Importo_dettaglio + (Ag_Doc.FieldByName('Importo').AsCurrency * qta_riga) * (Percentuale_pagata/100) ;
end ;
// Ddoc.Post ;
Calcolata := True ;
end ;
end ;
end ;
Provvigione_doc := Provvigione_doc + Ddoc.FieldByName('Provvigione').AsCurrency + Importo_dettaglio ;
if (Ddoc.state = dsEdit) or (Ddoc.state = dsInsert) then
Ddoc.Post ;
end ; // if articolo interno non vuoto
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ddoc.Next ;
end ;
{ with progresso_form do
begin}
if Calcolata then
begin
Appoggio.append ;
Appoggio.FieldByName('Record_ID').asString := Tdoc.FieldByName('Documento').AsString ;
Appoggio.FieldByName('Soggetto').AsString := Agente.FieldByName('Codice').AsString ;
Appoggio.FieldByName('Articolo').AsString := '' ;
if TipiDoc.FindKey([Tdoc.FieldByName('Tipo').AsString]) then
begin
if {(sog.FieldByName('Prima provvigione').AsBoolean) or }(Tdoc.FieldByName('Primo Doc').AsBoolean) then
Appoggio.FieldByName('Descrizion').AsString := 'Provvigioni per ' + TipiDoc.FieldByName('Descrizione').AsString + ' del ' + Tdoc.FieldByName('Data').AsString + ' numero ' + Tdoc.FieldByName('Numero').AsString + ' NC'
else
Appoggio.FieldByName('Descrizion').AsString := 'Provvigioni per ' + TipiDoc.FieldByName('Descrizione').AsString + ' del ' + Tdoc.FieldByName('Data').AsString + ' numero ' + Tdoc.FieldByName('Numero').AsString ;
end ;
{ else
showmessage('Attenzione: Il tipo ' + Tdoc.FieldByName('Tipo').AsString + ' del documento ' + Tdoc.FieldByName('Numero').AsString + ' non
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -