📄 vendita.pas
字号:
TTDScontrVarQuantita: TFloatField;
TTDScontrVarPunteggio: TFloatField;
TTDScontrVarPassato: TBooleanField;
TTDScontrVarPzConf: TFloatField;
TTDScontrVarIdGiornale: TStringField;
TTDistinta: TTable;
TTDistintaArticolo: TStringField;
TTDistintaRigo: TIntegerField;
TTDistintaComponente: TStringField;
TTDistintaQta: TFloatField;
TTDistintaNote: TMemoField;
TTDistintaIdGiornale: TStringField;
TTArticoliModalitadistintabase: TStringField;
TTDettaglioModalitaDistintaBase: TStringField;
Leggi_dispositivo: TAction;
RxLabelLettore: TRxLabel;
Annulla_scontrino: TAction;
Button1: TButton;
TTListinoVeloce: TTable;
TTListinoVeloceListino: TStringField;
TTListinoVeloceArticolo: TStringField;
TTListinoVeloceEL: TStringField;
TTListinoVeloceValoreX: TFloatField;
TTListinoVeloceValoreY: TFloatField;
TTListinoVeloceValoreZ: TFloatField;
TTListinoVeloceValoreK: TFloatField;
TTListinoVeloceFormulaRSNIV: TStringField;
TTListinoVelocePagina: TStringField;
TTListinoVeloceRiga: TStringField;
TTListinoVelocePezziperconfezione: TFloatField;
TTListinoVeloceArrotondaprezzi: TBooleanField;
TTListinoVelocePunteggio: TFloatField;
TTListinoVelocePrezzonettoL: TCurrencyField;
TTListinoVelocePrezzonettoE: TCurrencyField;
TTListinoVelocePrezzoivatoL: TCurrencyField;
TTListinoVelocePrezzoivatoE: TCurrencyField;
TTListinoVeloceIdGiornale: TStringField;
TTListinoVeloceImporto: TCurrencyField;
TTListinoPrezzovenditaL: TCurrencyField;
TTListinoPrezzovenditaE: TCurrencyField;
TTListinoVeloceQtapromozionale: TFloatField;
TTListinoVeloceQtapagare: TFloatField;
TTListinoVelocePromozionedal: TDateField;
TTListinoVelocePromozioneal: TDateField;
TTDettaglioQtapagata: TFloatField;
TTDettaglioPromozione: TStringField;
procedure FineExecute(Sender: TObject);
procedure P2Enter(Next: Boolean);
procedure FormCreate(Sender: TObject);
procedure MostraDettagliExecute(Sender: TObject);
procedure TTDettaglioCalcFields(DataSet: TDataSet);
procedure TTGiacenzaCalcFields(DataSet: TDataSet);
procedure SumGiacSumListChanged(Sender: TObject);
procedure TTDettaglioArticoloChange(Sender: TField);
procedure ScaricoExecute(Sender: TObject);
procedure dsDettaglioDataChange(Sender: TObject; Field: TField);
procedure TTDettaglioAfterInsert(DataSet: TDataSet);
procedure AvantiExecute(Sender: TObject);
procedure IndietroExecute(Sender: TObject);
procedure P2Show(Next: Boolean);
procedure P3Enter(Next: Boolean);
procedure TTScontrinoAccontoChange(Sender: TField);
procedure TTScontrinoScontovaloreChange(Sender: TField);
procedure TTScontrinoScontoChange(Sender: TField);
procedure TTScontrinoAbbuonoChange(Sender: TField);
procedure TTScontrinoBuonoChange(Sender: TField);
procedure TotaleExecute(Sender: TObject);
procedure P1Show(Next: Boolean);
procedure MostraDettCliExecute(Sender: TObject);
procedure TTScontrinoClienteChange(Sender: TField);
procedure P2Leave(Next: Boolean);
procedure TTScontrinoAfterPost(DataSet: TDataSet);
procedure articoliExecute(Sender: TObject);
procedure NuovoClienteExecute(Sender: TObject);
procedure P3Show(Next: Boolean);
procedure TTScontrinoCalcFields(DataSet: TDataSet);
procedure TTDettaglioAfterPost(DataSet: TDataSet);
procedure TTDettaglioBeforeDelete(DataSet: TDataSet);
procedure TTScontrinoBeforeDelete(DataSet: TDataSet);
procedure StampaExecute(Sender: TObject);
procedure P1Enter(Next: Boolean);
procedure SelTuttiClick(Sender: TObject);
procedure elBuoniCellClick(Column: TColumnEh);
procedure elBuoniExit(Sender: TObject);
procedure elBuoniKeyPress(Sender: TObject; var Key: Char);
procedure UsaBuoniClick(Sender: TObject);
procedure RicCliExecute(Sender: TObject);
procedure SalvabottoneExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure EditClienteKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
procedure GrigliaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure GrigliaKeyPress(Sender: TObject; var Key: Char);
procedure RestoExecute(Sender: TObject);
procedure TTDScontrVarAfterPost(DataSet: TDataSet);
procedure TTDScontrVarBeforeDelete(DataSet: TDataSet);
procedure TTDScontrVarAfterInsert(DataSet: TDataSet);
procedure Leggi_dispositivoExecute(Sender: TObject);
procedure Annulla_scontrinoExecute(Sender: TObject);
procedure TTListinoCalcFields(DataSet: TDataSet);
procedure TTDettaglioQuantitaChange(Sender: TField);
private
{ Private declarations }
Procedure formati ;
public
procedure InserisciNuovo;
function Arrotonda(Valore: currency; Valuta: String): Currency;
procedure CalcSelezione;
procedure UsaBuoniProc;
procedure calcola_qta_pagata;
{ Public declarations }
end;
var
Vendita_form: TVendita_form;
Inserito: boolean;
Salvato: boolean;
Inserendo: boolean;
Sto_Leggendo: boolean;
implementation
uses main, rica_art_u_fornit, clienti, u_resto_valuta, u_griglia_varianti,
disp_ext;
{$R *.DFM}
procedure TVendita_form.FineExecute(Sender: TObject);
Var
i : integer ;
oldIdx : String ;
scarico_annullato : boolean ;
begin
// Scarichiamo gli articoli dalla giacenza e assegnamo il punteggio al cliente
scarico_annullato := False ;
if TTDettaglio.IsEmpty then
begin
If MessageDlg('Nessun articolo selezionato, annullare lo scarico ?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
begin
scarico_annullato := True ;
TTScontrino.Delete ;
Release ;
end
else
begin
Release ;
end ;
end ;
Button4.SetFocus ;
TTDettaglio.First ;
While Not TTDettaglio.Eof do
begin
if not TTDettaglioPassato.AsBoolean then
begin
Try
if TTDettaglioModalitaDistintaBase.AsString <> 'S' then
begin
// Scarico Normale
if Main_form.GiacenzaDB.FindKey([TTDettaglioArticolo.asString,TTScontrinoDeposito.asString]) then
begin
Main_form.GiacenzaDB.Edit ;
Main_form.GiacenzaDBQtaScarico.AsFloat := Main_form.GiacenzaDBQtaScarico.asFloat + TTDettaglioQuantita.AsFloat ;
Main_form.GiacenzaDB.Post ;
end
else
begin
Main_form.GiacenzaDB.Insert ;
Main_form.GiacenzaDBArticolo.AsString := TTDettaglioArticolo.asString ;
Main_form.GiacenzaDBDeposito.asString := TTScontrinoDeposito.asString ;
Main_form.GiacenzaDbQtaIniziale.asFloat := 0 ;
Main_form.GiacenzaDbQtaCarico.asFloat := 0 ;
Main_form.GiacenzaDBQtaScarico.AsFloat := TTDettaglioQuantita.AsFloat ;
if TTArticoli.FindKey([TTdettaglioArticolo.asSTring]) then
Main_form.GiacenzaDbArticolointerno.asString := TTArticoliArticolo.asString ;
Main_form.GiacenzaDB.Post ;
end ;
end
else
begin
// Scarico Distinta Base Senza Giacenza
TTDScontrVar.First ;
while not TTDScontrVar.Eof do
begin
if Main_form.GiacenzaDB.FindKey([TTDScontrVarArticolo.asString,TTScontrinoDeposito.asString]) then
begin
Main_form.GiacenzaDB.Edit ;
Main_form.GiacenzaDBQtaScarico.AsFloat := Main_form.GiacenzaDBQtaScarico.asFloat + (TTDScontrVarQuantita.AsFloat * TTDettaglioQuantita.AsFloat) ;
Main_form.GiacenzaDB.Post ;
end
else
begin
Main_form.GiacenzaDB.Insert ;
Main_form.GiacenzaDBArticolo.AsString := TTDScontrVarArticolo.asString ;
Main_form.GiacenzaDBDeposito.asString := TTScontrinoDeposito.asString ;
Main_form.GiacenzaDbQtaIniziale.asFloat := 0 ;
Main_form.GiacenzaDbQtaCarico.asFloat := 0 ;
Main_form.GiacenzaDBQtaScarico.AsFloat := TTDScontrVarQuantita.AsFloat * TTDettaglioQuantita.AsFloat ;
if TTArticoli.FindKey([TTDScontrVarArticolo.asSTring]) then
Main_form.GiacenzaDbArticolointerno.asString := TTArticoliArticolo.asString ;
Main_form.GiacenzaDB.Post ;
end ;
TTDScontrVar.Next ;
end ;
end ;
finally
TTDettaglio.Edit ;
TTDettaglioPassato.AsBoolean := True ;
TTDettaglio.Post ;
end ;
end ;
TTDettaglio.Next ;
end ;
if (not TTScontrinoPassato.AsBoolean) then
begin
try
OldIdx := Main_form.TTClienti.IndexName ;
Main_form.TTClienti.IndexName := '' ;
If Main_form.TTClienti.FindKey([TTScontrinoCliente.asString]) then
begin
Main_form.TTClienti.Edit ;
Main_form.TTClientiPunteggio.asFloat := Main_form.TTClientiPunteggio.asFloat + TTScontrinoBonus.AsFloat ;
Main_form.TTClienti.Post ;
end ;
Main_form.TTClienti.IndexName := OldIdx ;
finally
TTScontrino.Edit ;
TTScontrinoSaldato.asBoolean := (TTscontrinoTotaleSaldoE.AsCurrency = 0) ;
TTScontrinoPassato.asBoolean := True ;
TTScontrino.Post ;
end ;
end ;
// Smarchiamo i buoni utilizzati...
if usaBuoni.Checked then
for i := 0 to ElBuoni.SelectedRows.Count - 1 do
begin
Qbuoni.BookMark := ElBuoni.SelectedRows.Items[i] ;
If Main_form.TTBuoni.FindKey([QbuoniId.asinteger]) then
begin
Main_form.TTbuoni.Edit ;
Main_form.TTBuoniUsato.AsBoolean := true ;
Main_form.TTBuoni.Post ;
end;
end;
if (main_form.TTDefault.FindKey(['RESTO'])) and (not scarico_annullato) then
if main_form.TTDefaultValore.AsString = 'SI' then
resto.Execute ;
if main_form.TTconfigStampaScontrino.AsBoolean then
Stampa.Execute ;
Release ;
end;
procedure TVendita_form.P2Enter(Next: Boolean);
begin
fine.Enabled := False ;
DettArt.Visible := mostraDettagli.Checked ;
end;
procedure TVendita_form.FormCreate(Sender: TObject);
begin
inserito := false ;
Salvato := False ;
Sto_leggendo := false ;
end;
Procedure TVendita_form.Formati ;
var
formatocampi : string ;
begin
If TTScontrinoValuta.Value = 'E' then
formatocampi := '#,##0.00'
else
formatocampi := '#,##0' ;
TTdettaglioImporto.Displayformat := formatocampi ;
TTdettaglioPrezzoIvato.Displayformat := formatocampi ;
TTdettaglioSconto.DisplayFormat := formatocampi ;
TTDettaglioSconto2.DisplayFormat := formatoCampi ;
TTScontrinoScontoValore.Displayformat := formatocampi ;
TTScontrinoAbbuono.DisplayFormat := formatoCampi ;
TTScontrinoBuono.DisplayFormat := FormatoCampi ;
TTScontrinoAcconto.DisplayFormat := FormatoCampi ;
TTScontrinoTotaleMerce.Displayformat := formatoCampi ;
end ;
procedure TVendita_form.InserisciNuovo;
begin
Inserendo := True ;
TTScontrino.Insert ;
TTScontrinoIDGiornale.AsString := Main_form.LogI(TTScontrino.TableName);
TTScontrinoDeposito.Value := Main_form.TTConfigDeposito.Value ;
TTScontrinoCassa.Value := Main_form.TTconfigCassa.Value ;
TTScontrinoOperatore.Value := Main_form.TTconfigOperatore.Value ;
Main_form.TTConfig.Edit ;
Main_form.TTConfigContatoreScontrini.Value := Main_form.TTConfigContatoreScontrini.Value + 1 ;
Main_form.TTConfig.Post ;
TTScontrinoNumeroScontrino.Value := Main_form.TTconfigContatoreScontrini.Value ;
TTScontrinoPagamento.Value := Main_form.TTConfigPagamentoStandard.Value ;
TTScontrinoValuta.Value := Main_form.TTConfigValutaStandard.Value ;
TTScontrinoScontoValore.AsFloat := 0 ;
TTscontrinoSconto.AsFloat := 0 ;
TTscontrinoAbbuono.asCurrency := 0 ;
TTScontrinoBuono.asCurrency := 0 ;
TTScontrinoTotaleL.asCurrency := 0 ;
TTScontrinoTotaleE.asCurrency := 0 ;
TTScontrinoTotaleMerce.asCurrency := 0 ;
TTScontrinoPassato.AsBoolean := False ;
TTScontrinoIDBuono.AsInteger := 1 ;
TTScontrino.Post ;
Inserendo := False ;
Formati ;
end;
procedure TVendita_form.MostraDettagliExecute(Sender: TObject);
begin
mostraDettagli.checked := not MostraDettagli.checked ;
DettArt.Visible := mostraDettagli.Checked ;
end;
procedure TVendita_form.TTDettaglioCalcFields(DataSet: TDataSet);
Var
PrAq,PrV : Currency ;
Pc, Uc : Real ;
Qta_dettaglio : Real ;
begin
if TTDettaglioQtaPagata.AsFloat <> 0 then
Qta_dettaglio := TTDettaglioQtaPagata.AsFloat
else
Qta_dettaglio := TTDettaglioQuantita.AsFloat ;
if (main_form.TTArtbase.FindKey([TTDettaglioArticolo.asString])) then
begin
if not TTArticoli.locate('Articolo',main_form.TTArtbaseArticoloInterno.AsString,[]) then exit ;
// if not TTArticoli.findKey([TTDettaglioArticolo.asString]) then exit ; PROVA
Try
pc := TTListinoPezziperConfezione.AsFloat ;
uc := TTArticoliUc.asFloat;
if pc = 0 then pc := 1 ;
if uc = 0 then uc := 1 ;
TTDettaglioDescrizione.AsString := TTArticoliDescrizione.asString ;
if TTScontrinoValuta.AsString = 'E' then
PrAq := TTArticoliPrezzoAcquistoE.AsCurrency * Uc / Pc
else
PrAq := TTarticoliPrezzoAcquistoL.AsCurrency * Uc / Pc;
PrV := TTDettaglioPrezzoIvato.AsCurrency / (1 + TTivaAliquota.AsFloat / 100) ;
if prAq <> 0 then
TTDettaglioRicarico.asFloat := (PrV - PrAq) / PrAq * 100
else
TTDettaglioRicarico.asFloat := 0 ;
if Prv <> 0 then
TTDettaglioMargine.AsFloat := ((PrV - PrAq) / PrV) * 100
else
TTDettaglioMargine.AsFloat := 0 ;
TTDettaglioArticoloFornitore.AsString := TTArticoliArticoloFornitore.AsString ;
TTDettaglioImporto.asCurrency := TTDettaglioPrezzoIvato.AsCurrency * Qta_dettaglio * (1-TTDettaglioSconto.AsFloat/100) - TTDettaglioSconto2.Ascurrency ;
except
on e:exception do
begin
showmessage(e.message + ' ' + TTdettaglioArticolo.AsString)
end ;
end ;
end ;
end;
procedure TVendita_form.TTGiacenzaCalcFields(DataSet: TDataSet);
begin
TTGiacenzaGiacenza.AsFloat := TTGiacenzaQtaIniziale.AsFloat + TTGiacenzaQtaCarico.AsFloat - TTGiacenzaQtaScarico.AsFloat ;
end;
procedure TVendita_form.SumGiacSumListChanged(Sender: TObject);
begin
Attuale.Text := FormatFloat('0',SumGiac.SumCollection.Items[0].SumValue) ;
end;
procedure TVendita_form.TTDettaglioArticoloChange(Sender: TField);
var riga, colonna : integer ;
senza_variante, vuoto : boolean ;
scontoveloce : real ;
begin
// Cashbit 4.01.2002
// La riga seguente
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -