📄 agg_dep.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 + -