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

📄 agg_dep.pas

📁 基于OOP设计的一套较好的ERP系统
💻 PAS
字号:
unit agg_dep;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
  Buttons, ExtCtrls, ComCtrls, Db, DBTables, Grids, DBGrids;

type
  TAggiorna_depositi_form = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    barra: TProgressBar;
    Testo_messaggio: TMemo;
    TTArticoliBanco: TTable;
    TTArticoliBancoArticoloetichetta: TStringField;
    TTArticoliBancoArticolointerno: TStringField;
    TTArticoliBancoDescrizione: TStringField;
    TTArticoliBancoAliquotaIva: TFloatField;
    TTArticoliBancoPunteggio: TFloatField;
    TTArticoliBancoPrezzoivatoL: TCurrencyField;
    TTArticoliBancoPrezzoivatoE: TCurrencyField;
    TTScontrino: TTable;
    DataSource1: TDataSource;
    TTScontrinoNumeroscontrino: TFloatField;
    TTScontrinoDeposito: TStringField;
    TTScontrinoCassa: TStringField;
    TTScontrinoOperatore: TStringField;
    TTScontrinoData: TDateField;
    TTScontrinoValuta: TStringField;
    TTScontrinoScontovalore: TCurrencyField;
    TTScontrinoSconto: TFloatField;
    TTScontrinoPagamento: TStringField;
    TTScontrinoCliente: TStringField;
    TTScontrinoPassato: TBooleanField;
    TTDettaglio: TTable;
    TTDettaglioNumeroscontrino: TFloatField;
    TTDettaglioRiga: TAutoIncField;
    TTDettaglioArticolo: TStringField;
    TTDettaglioQuantita: TFloatField;
    TTDettaglioPrezzoivato: TCurrencyField;
    TTDettaglioAliquotaiva: TFloatField;
    TTDettaglioSconto: TFloatField;
    TTDettaglioSconto2: TCurrencyField;
    TTDettaglioPunteggio: TFloatField;
    TTDettaglioPassato: TBooleanField;
    TTGiacenzaLocal: TTable;
    TTGiacenzaLocalArticolo: TStringField;
    TTGiacenzaLocalDeposito: TStringField;
    TTGiacenzaLocalCausale: TStringField;
    TTGiacenzaLocalQtainiziale: TFloatField;
    TTGiacenzaLocalQtacarico: TFloatField;
    TTGiacenzaLocalQtascarico: TFloatField;
    TTGiacenzaLocalDataultimoMovimento: TDateField;
    TTGiacenzaLocalArticolointerno: TStringField;
    TTArticoliBancoGiacenza: TFloatField;
    TTArticoliBancoQtascarico: TFloatField;
    TTArticoliBancoDescrizionebase: TStringField;
    gg: TEdit;
    Label1: TLabel;
    ArtZero: TCheckBox;
    EsportaTutti: TCheckBox;
    TTArticoliBancoVariante1: TStringField;
    TTArticoliBancoVariante2: TStringField;
    eurodbbanco: TDatabase;
    procedure OKBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Aggiorna_depositi_form: TAggiorna_depositi_form;

implementation

uses ana_mod;

{$R *.DFM}

procedure TAggiorna_depositi_form.OKBtnClick(Sender: TObject);
Var
   var1,var2,dirEuro2000 : string ;
   i : integer ;
   Giorni,code : Integer ;
   esporta : boolean ;

begin
     //ModuloDatiAnagrafiche.leggiChiave('Causale vendita scontrino',causale) ;
     // fase 1 : preparazione articoli, alias : banco
 ModuloDatiAnagrafiche.TTDepositi.First ;
 While Not ModuloDatiAnagrafiche.TTDepositi.Eof do
  begin
   If Not ModuloDatiAnagrafiche.TTDepositiLocale.asBoolean then
    begin
     euroDbBanco.close ;
     EuroDbBanco.AliasName := 'euro2000' ;
     EuroDbbanco.open ;
     direuro2000 := EuroDbbanco.Directory ;
     //euroDbBanco.DatabaseName := 'bancoDep' ;
     euroDbBanco.Directory := dirEuro2000 + 
                         moduloDatiAnagrafiche.TTDepositiDeposito.AsString ;
     Val(GG.Text,Giorni,Code) ;
     Testo_messaggio.Lines.Add('Aggiornamento deposito : ' + ModuloDatiAnagrafiche.TTDepositiDeposito.asString) ;
     Testo_messaggio.lines.add('1.Lettura scontrini...') ;
     TTScontrino.Open ;
     TTDettaglio.Open ;
     TTGiacenzaLocal.Open ;
     TTScontrino.First ;
     Barra.Max := TTscontrino.RecordCount ;
     While not TTScontrino.Eof do
      begin
       Barra.Position := TTscontrino.RecNo ;
       Barra.Update ;
       if not TTScontrinoPassato.asBoolean then
        begin
         TTDettaglio.first ;
         While Not TTdettaglio.Eof do
          begin
           If not TTDettaglioPassato.AsBoolean then
            begin
             // Aggiornamento giacenze o inserimento movimento nuovo
             If TTGiacenzaLocal.FindKey([TTdettaglioArticolo.asString,TTScontrinoDeposito.asString]) then
              begin
               Try
                 TTGiacenzaLocal.Edit ;
                 TTGiacenzaLocalQtaScarico.AsFloat := TTGiacenzaLocalQtaScarico.asFloat + TTDettaglioQuantita.asFloat ;
                 If TTGiacenzaLocalDataUltimoMovimento.Value < TTScontrinoData.Value then
                    TTGiacenzaLocalDataUltimoMovimento.Value := TTScontrinoData.Value ;
                 TTGiacenzaLocal.Post ;
               finally
                 TTDettaglio.Edit ;
                 TTDettaglioPassato.asBoolean := true ;
                 TTdettaglio.Post ;
               end ;
              end
             else
              begin
               TTGiacenzaLocal.Insert ;
               TTGiacenzaLocalArticolo.asString := TTDettaglioArticolo.asString ;
               TTGiacenzaLocalDeposito.AsString := TTScontrinoDeposito.asString ;
               TTGiacenzaLocalQtaScarico.asFloat := TTdettaglioQuantita.asFloat ;
               TTGiacenzaLocalDataUltimoMovimento.Value := TTscontrinoData.Value ;
               TTGiacenzaLocal.Post ;
               TTdettaglio.Edit ;
               TTdettaglioPassato.asBoolean := true ;
               TTDettaglio.Post ;
              end ;
            end ;
           TTDettaglio.Next ;
          end ;
        end ;
        TTScontrino.Edit ;
        TTScontrinoPassato.asBoolean := true ;
        TTScontrino.Post ;
        TTScontrino.Next ;
      end ;
     Testo_messaggio.Lines.Add('1.Lettura scontrini effettuata.') ;
     Testo_messaggio.lines.add('2.Preparazione articoli');
     // Preparazione articoli .....
     TTArticoliBanco.Open ;
     While Not TTArticoliBanco.IsEmpty do TTarticoliBanco.Delete ;
     
     With ModuloDatiAnagrafiche do
      begin
       barra.position := 0 ;
       barra.max := TTArticoli.RecordCount ;
       //TTArticoli.DisableControls ;
       TTArticoli.first ;
       While not TTArticoli.eof do
          begin
           Esporta := True ;
           If Not TTArticoliGestioneVarianti.AsBoolean then
               begin
                 If ArtZero.Checked and not TTGiacenzaLocal.FindKey([TTArticoliArticoloEtichetta.asString]) then
                    Esporta := false ;
                 If TTGiacenzaLocal.FindKey([TTArticoliArticoloEtichetta.asString]) then
                    If TTGiacenzaLocalDataultimoMovimento.asDatetime < (Now - Giorni) then
                    Esporta := False ;
                 If ArtZero.Checked and TTGiacenzaLocal.FindKey([TTArticoliArticoloEtichetta.asString]) then
                    If (TTGiacenzaLocalQtaIniziale.AsFloat + TTGiacenzaLocalQtaCarico.asFloat - TTGiacenzaLocalQtaScarico.AsFloat) = 0 then
                    Esporta := False ;
                 If Esporta or EsportaTutti.Checked then
                   begin
                     TTArticoliBanco.Insert ;
                     TTArticoliBancoArticoloInterno.asString := ModuloDatianagrafiche.TTArticoliArticolo.asString ;
                     TTArticoliBancoArticoloEtichetta.asSTring := TTarticoliArticoloEtichetta.asString ;
                     TTArticoliBancoDescrizioneBase.asString := TTarticoliDescrizione.AsString ;
                     TTArticoliBancoDescrizione.asString := TTarticoliDescrizione.AsString ;
                     TTArticoliBancoAliquotaIva.AsFloat := TTArticolialiquotaIva.asFloat ;
                     If TTListino.findKey([TTarticoliArticolo.AsString,moduloDatiAnagrafiche.TTDepositiListino.asString]) then
                      begin
                       TTArticoliBancoPrezzoIvatoE.asCurrency := TTListinoPrezzoIvatoE.asCurrency ;
                       TTArticolibancoPrezzoIvatoL.asCurrency := TTListinoPrezzoIvatoL.asCurrency ;
                       TTArticolibancoPunteggio.AsFloat := TTListinoPunteggio.asFloat ;
                      end ;
                      If TTGiacenzaLocal.FindKey([TTArticoliArticolo.AsString,moduloDatiAnagrafiche.TTDepositiDeposito.asString]) then
                        begin
                         TTArticoliBancoGiacenza.AsFloat := TTGiacenzaLocalQtainiziale.asFloat + TTGiacenzaLocalQtaCarico.AsFloat - TTGiacenzaLocalQtaScarico.AsFloat ;
                         TTArticoliBancoQtaScarico.AsFloat := 0 ;
                        end ;
                     TTarticoliBanco.Post ;
                   end ;
               end
           else
               begin
                // inseriamo varianti
                TTArtbase.First ;
                While Not TTArtBase.Eof do
                 begin
                   Esporta := true ;
                   If ArtZero.Checked and not TTGiacenzaLocal.FindKey([TTArtbaseArticoloEtichetta.asString,moduloDatiAnagrafiche.TTDepositiDeposito.asString]) then
                      Esporta := false ;
                   If TTGiacenzaLocal.FindKey([TTArtbaseArticoloEtichetta.asString,moduloDatiAnagrafiche.TTDepositiDeposito.asString]) then
                      If TTGiacenzaLocalDataultimoMovimento.asDatetime < (Now - Giorni) then
                      Esporta := False ;
                   If ArtZero.Checked and TTGiacenzaLocal.FindKey([TTArtbaseArticoloEtichetta.asString,moduloDatiAnagrafiche.TTDepositiDeposito.asString]) then
                      If (TTGiacenzaLocalQtaIniziale.AsFloat + TTGiacenzaLocalQtaCarico.asFloat - TTGiacenzaLocalQtaScarico.AsFloat) <= 0 then
                      Esporta := False ;
                   If Esporta or EsportaTutti.Checked then
                    begin
                       Var1 := ' ' ;
                       Var2 := ' ' ;
                       If Length(TTArtBaseDenominazioneVariante1.asString) > 3 then
                        For i:= 1 to 3 do
                         var1 := var1 + TTArtBaseDenominazioneVariante1.asString[i]
                       else
                        Var1 := Var1 + TTArtBaseDenominazioneVariante1.asString ;
                       If Length(TTArtBaseDenominazioneVariante2.asString) > 3 then
                        For i:= 1 to 3 do
                         var2 := Var2 + TTArtBaseDenominazioneVariante2.asString[i]
                        else
                         Var2 := Var2 + TTArtBaseDenominazioneVariante2.asString ;
                       TTarticoliBanco.Insert ;
                       TTArticoliBancoArticoloInterno.asString := TTArticoliArticolo.asString ;
                       TTArticoliBancoArticoloEtichetta.asSTring := TTartbaseArticoloEtichetta.asString ;
                       TTArticoliBancoDescrizioneBase.asString := TTarticoliDescrizione.AsString ;
                       TTArticoliBancoDescrizione.asString := TTarticoliDescrizione.AsString + var1 + ' ' + TTartBaseVariante1.asString +
                                                              var2 + ' ' + TTartBaseVariante2.asString ;
                       TTArticoliBancoAliquotaIva.AsFloat := TTArticolialiquotaIva.asFloat ;
                       If TTListino.findKey([TTarticoliArticolo.AsString,moduloDatiAnagrafiche.TTDepositiListino.asString]) then
                        begin
                         TTArticoliBancoPrezzoIvatoE.asCurrency := TTListinoPrezzoIvatoE.asCurrency ;
                         TTArticolibancoPrezzoIvatoL.asCurrency := TTListinoPrezzoIvatoL.asCurrency ;
                         TTArticolibancoPunteggio.AsFloat := TTListinoPunteggio.asFloat ;
                        end ;
                       If TTGiacenzaLocal.FindKey([TTArtbaseArticoloEtichetta.AsString,moduloDatiAnagrafiche.TTDepositiDeposito.asString]) then
                        begin
                         TTArticoliBancoGiacenza.AsFloat := TTGiacenzaLocalQtainiziale.asFloat + TTGiacenzaLocalQtaCarico.AsFloat - TTGiacenzaLocalQtaScarico.AsFloat ;
                        end ;
                       TTArticoliBancoVariante1.asString := TTartbaseVariante1.asString ;
                       TTArticoliBancoVariante2.asString := TTartbaseVariante2.asString ;
                       TTarticoliBanco.Post ;
                    end ;
                   TTArtBase.Next ;
                 end ;

               end ;
           Barra.Position := TTarticoli.RecNo ;
           Barra.Update ;
           TTArticoli.Next ;
          end ;
       //TTArticoli.Enablecontrols ;
       TTArticolibanco.Close ;
      end ;
     Testo_messaggio.lines.add('2.Articoli pronti...') ;
     // Fase 2 : acquisizione dati da scontrini per aggiornamento giacenze
     Testo_messaggio.Lines.Add('Cliccare su CHIUDI per uscire.') ;
     TTScontrino.Close ;
     TTDettaglio.Close ;
     TTGiacenzaLocal.Close ;
   end ;
   ModuloDatiAnagrafiche.TTDepositi.next ;
  end ;
end;

procedure TAggiorna_depositi_form.CancelBtnClick(Sender: TObject);
begin
     release ;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -