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

📄 u_fatturazione_main.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, Grids, DBGrids, ActnList, ComCtrls, StdCtrls, RxMemDS, DBGridEh,
  DBTables;

type
  Tfatturazione_main = class(TForm)
    PageControl: TPageControl;
    Causale_tipo: TTabSheet;
    Elenco: TTabSheet;
    Riepilogo: TTabSheet;
    ActionList1: TActionList;
    DBGrid1: TDBGrid;
    DsCausali: TDataSource;
    DBGrid2: TDBGrid;
    DsCauDoc: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    dal: TDateTimePicker;
    Label4: TLabel;
    al: TDateTimePicker;
    Annulla_Button: TButton;
    Avanti_Button: TButton;
    Annulla: TAction;
    Avanti: TAction;
    RxSoggetti: TRxMemoryData;
    RxDocumenti: TRxMemoryData;
    DBGridEh1: TDBGridEh;
    DsSoggetti: TDataSource;
    DsDocumenti: TDataSource;
    Q_doc: TQuery;
    RxSoggettiCodice: TStringField;
    RxSoggettiRagionesociale: TStringField;
    RxSoggettiTotale: TCurrencyField;
    RxSoggettiSelezionato: TBooleanField;
    RxDocumentiCodice: TStringField;
    RxDocumentiDocumento: TIntegerField;
    RxDocumentiData: TDateTimeField;
    RxDocumentiNumero: TIntegerField;
    RxDocumentiSerie: TStringField;
    RxDocumentiSelezionato: TBooleanField;
    RxDocumentiRagioneSociale: TStringField;
    RxDocumentiTotale: TCurrencyField;
    ProgressBar: TProgressBar;
    Report: TMemo;
    DataFatturazione: TDateTimePicker;
    Label5: TLabel;
    procedure AnnullaExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure AvantiExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PageControlMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
    function estrapola_documenti : boolean ;
    function esegui_conversione : boolean ;
    procedure Prepara_testata ;
  end;

var
  fatturazione_main: Tfatturazione_main;

implementation

uses doc_mod, ana_mod ;

{$R *.DFM}

procedure Tfatturazione_main.AnnullaExecute(Sender: TObject);
begin
  close ;
end;

procedure Tfatturazione_main.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  release ;
end;

procedure Tfatturazione_main.Prepara_testata;
 begin
   with ModuloDatiDocumenti do
     begin
       If ModuloDatiAnagrafiche.TTSoggetti.FindKey([TTTestataSoggetto.AsString]) then
          begin
             If TTTestataMuoviMerce.asBoolean then
                begin
                  //   TTTestataPorto.AsString := 'Franco' ;
                     If (TTTestataIndirizzoMerce.AsString = '') then
                        TTTestataIndirizzoMerce.AsString := 'IDEM' ;
                     // Imposto i depositi
                     if TTTestataTipoMovimento.AsString = 'Iniziale' then
                       begin
                         TTTestataDepositoEntrata.AsString := ModuloDatiAnagrafiche.TTsoggettiDepositopreferenziale.AsString ;
                         TTTestataDepositoUscita.AsString := ModuloDatiAnagrafiche.TTsoggettiDepositopreferenziale.AsString ;
                         If TTTestataDepositoEntrata.AsString = '' then
                                TTTestataDepositoEntrata.AsString := TTImpostazioniDepositoEntrata.AsString ;
                         If TTTestataDepositoUscita.AsString = '' then
                                TTTestataDepositoUscita.AsString := TTImpostazioniDepositoUscita.AsString ;
                       end
                     else
                       begin
                         If TTTestataTipoMovimento.AsString = 'Carico' then
                            begin
                                 TTTestataDepositoEntrata.AsString := ModuloDatiAnagrafiche.TTsoggettiDepositopreferenziale.AsString ;
                                 TTTestataDepositoUscita.AsString := 'Nessuno' ;
                                 If TTTestataDepositoEntrata.AsString = '' then
                                    TTTestataDepositoEntrata.AsString := TTImpostazioniDepositoEntrata.AsString ;
                            end
                         else
                             begin
                                 TTTestataDepositoUscita.AsString := ModuloDatiAnagrafiche.TTsoggettiDepositopreferenziale.AsString ;
                                 TTTestataDepositoEntrata.AsString := 'Nessuno' ;
                                 If TTTestataDepositoUscita.AsString = '' then
                                    TTTestataDepositoUscita.AsString := TTImpostazioniDepositoUscita.AsString ;
                             end;
                       end ;
                end ;
             {
             if TTTestataPagamento.AsString = '' then
                TTTestataPagamento.AsString := ModuloDatiAnagrafiche.TTsoggettiPagamento.AsString ;
             If TTTestataPagamento.AsString = '' then
                TTTestataPagamento.asString := TTImpostazioniPagamento.asString ;
             TTTestataBanca.AsString := ModuloDatiAnagrafiche.TTSoggettiBanca.AsString ;
             TTTestataAgente.AsString := ModuloDatiAnagrafiche.TTSoggettiAgente.AsString ;
             If TTTestataAgente.AsString = '' then TTTestataAgente.asString := TTImpostazioniAgente.AsString ;
             If TTTestataSpeseBancarie.AsString = '' then
              If TTTestataValuta.asString = 'E' then
                TTTestataSpeseBancarie.AsCurrency := TTImpostazioniSpeseBancarieE.asCurrency
              else
                TTTestataSpeseBancarie.AsCurrency := TTImpostazioniSpeseBancarieL.asCurrency ;
             If TTTestataSpeseVarie.AsString = '' then
              If TTTestataValuta.asString = 'E' then
                TTTestataSpeseVarie.AsCurrency := TTImpostazioniSpeseVarieE.asCurrency
              else
                TTTestataSpeseVarie.AsCurrency := TTImpostazioniSpeseVarieL.asCurrency ;
             If TTTestataSpeseTrasporto.AsString = '' then
              If TTTestataValuta.asString = 'E' then
                TTTestataSpeseTrasporto.AsCurrency := TTImpostazioniSpesediTrasportoE.asCurrency
              else
                TTTestataSpeseTrasporto.AsCurrency := TTImpostazioniSpesediTrasportoL.asCurrency ;
              }
          end ;
     end ;
 end ;

function Tfatturazione_main.estrapola_documenti : boolean ;
var Giorno, Mese, Anno : Word ;
begin
   Q_doc.Close ;
   //Q_doc.ParamByName('Causale').AsString := ModuloDatiDocumenti.TTCausaliCodice.AsString ;
   Q_doc.ParamByName('Tipo').AsString := ModuloDatiDocumenti.TTCaudocTipodocumento.AsString ;
   DecodeDate(Dal.DateTime,Anno,Mese,Giorno) ;
   Q_doc.ParamByName('Dal').AsDate := Dal.Date ; //StrToDate(IntToStr(Mese) + '/' + IntToStr(Giorno) + '/' + IntToStr(Anno)) ;
   DecodeDate(Al.DateTime,Anno,Mese,Giorno) ;
   Q_doc.ParamByName('Al').AsDate := Al.Date ;//StrToDate(IntToStr(Mese) + '/' + IntToStr(Giorno) + '/' + IntToStr(Anno)) ;
   Q_doc.Prepare ;
   Q_doc.ExecSQL ;
   Q_doc.Open ;

   RxDocumenti.Close ;
   RxDocumenti.Open ;
   Q_doc.First ;
   while not Q_doc.Eof do
     begin
       RxDocumenti.Insert ;
       RxDocumenti['Codice'] := Q_doc['Soggetto'] ;
       RxDocumenti['Ragione sociale'] := Q_doc['Ragione sociale documento'] ;
       RxDocumenti['Documento'] := Q_doc['Documento'] ;
       RxDocumenti['Numero'] := Q_doc['Numero'] ;
       RxDocumenti['Serie'] := Q_doc['Serie'] ;
       RxDocumenti['Data'] := Q_doc['Data'] ;
       RxDocumenti['Totale'] := Q_doc['Totale E'] ;
       RxDocumenti['Selezionato'] := True ;
       RxDocumenti.Post ;
       Q_doc.Next ;
     end ;
end ;

function Tfatturazione_main.Esegui_conversione : boolean ;
var Documento : integer ;
    DataDoc : TDatetime ;
    anno, mese, giorno : word ;
    Causale, Tipo, Soggetto : String ;
begin
  Fatturazione_riepilogativa := True ;
  Documento := 11111 ;
  DataDoc := Now ;
  Causale := ModuloDatiDocumenti.TTCausali['Codice'] ;
  Tipo := ModuloDatiDocumenti.TTCaudocTipodocumento.AsString ;
  Report.Lines.Clear ;
  progressbar.Position := 0 ;
  progressbar.Max := RxDocumenti.RecordCount ;
  ProgressBar.Step := 1;
  RxDocumenti.First ;
  Soggetto := '' ;
  while not RxDocumenti.Eof do
    begin
      if (RxDocumentiSelezionato.AsBoolean) and (Soggetto <> RxDocumenti['Codice']) and (RxDocumenti['Codice'] <> '')  then
        begin
           //PreparaDoc ;
           ModuloDatiDocumenti.TTTestata.Insert ;
           ModuloDatiDocumenti.TTTestata['Soggetto'] := RxDocumenti['Codice'] ;
           Soggetto := RxDocumenti['Codice'] ;
           ModuloDatiDocumenti.AggiornaSoggetto ;
           ModuloDatiDocumenti.TTTestata['Causale'] := Causale ;
           ModuloDatiDocumenti.TTTestata['Tipo'] := Tipo ;
           Prepara_Testata ;
           ModuloDatiDocumenti.TTTestata['Data'] := DataFatturazione.DateTime ;
           DecodeDate(ModuloDatiDocumenti.TTTestataData.AsDateTime,anno,mese,giorno) ;
           ModuloDatiDocumenti.TTTestata['Numero'] := ModuloDatiAnagrafiche.IncNumeratore(ModuloDatiAnagrafiche.TTTipidocNumeratore.AsString,inttostr(anno),'','') ;
           Documento := ModuloDatiDocumenti.TTTestata['Documento'] ;
           ModuloDatiDocumenti.ConvertiDocs(RxDocumenti['Codice'],
                                            ModuloDatiDocumenti.TTTestataTipo.AsString ,
                                            Documento ,
                                            Datadoc,
                                            False,True) ;
           ModuloDatiDocumenti.CalcolaImponibili ;
           Report.Lines.Add('Soggetto: ' + ModuloDatiDocumenti.TTTestataSoggetto.AsString + ' ' + ModuloDatiDocumenti.TTTestataRagioneSocialedocumento.AsString + ' '  +
                            'Data: ' + ModuloDatiDocumenti.TTTestataData.AsString + ' '  + 'Numero: ' + ModuloDatiDocumenti.TTTestataNumero.AsString + ' '  +
                            'Totale: ' + ModuloDatiDocumenti.TTTestataTotaleE.AsString) ;
           ModuloDatiDocumenti.TTTestata.Post ;
        end ;
      ProgressBar.StepIt;
      RxDocumenti.Next ;
    end ;
  Report.Lines.Add('Fine.') ;
  Fatturazione_riepilogativa := False ;
end ;

procedure Tfatturazione_main.AvantiExecute(Sender: TObject);
begin
  if PageControl.ActivePage = Riepilogo then
    close ;
  if PageControl.ActivePage = Elenco then
    begin
      PageControl.SelectNextPage(True) ;
      esegui_conversione ;
      Avanti_button.Caption := 'Fine' ;
      Annulla_button.Enabled := False ;
    end ;
  if PageControl.ActivePage = Causale_tipo then
    begin
      PageControl.SelectNextPage(True) ;
      estrapola_documenti ;
    end ;
end;

procedure Tfatturazione_main.FormCreate(Sender: TObject);
begin
  dal.DateTime := now ;
  al.DateTime := now ;
  DataFatturazione.DateTime := Now ;
  Avanti_button.Caption := 'Avanti >>' ;
  Annulla_button.Enabled := True ;
end;

procedure Tfatturazione_main.PageControlMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  abort ;
end;

end.

⌨️ 快捷键说明

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