⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_prov_agenti.pas

📁 基于OOP设计的一套较好的ERP系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
                                     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 + -