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

📄 vendita.pas

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