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

📄 storicorb_u.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, Grids, DBGrids, StdCtrls, DBCtrls, Mask, ExtCtrls, Db, DBTables,
  ActnList;

type
  TStoricoRb_Form = class(TForm)
    SpeedButton1: TSpeedButton;
    TTTRiba: TTable;
    DSTriba: TDataSource;
    TTDriba: TTable;
    DSDriba: TDataSource;
    TTTRibaRiba: TFloatField;
    TTTRibaBancaappoggio: TStringField;
    TTTRibaNumeroRiba: TFloatField;
    TTTRibaDatascadenza: TDateField;
    TTTRibaDebitore: TStringField;
    TTTRibaBancadebitore: TStringField;
    TTTRibaImporto: TCurrencyField;
    TTTRibaDettaglioelaborato: TBooleanField;
    TTTRibaDisco: TBooleanField;
    TTDribaRiba: TFloatField;
    TTDribaProgressivo: TAutoIncField;
    TTDribaDocumento: TFloatField;
    TTDribaNumerofattura: TFloatField;
    TTDribaSerie: TStringField;
    TTDribaDatafattura: TDateField;
    TTDribaImportototalefattura: TCurrencyField;
    TTDribaImportoRiba: TCurrencyField;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    TTTRibaLKBanche: TStringField;
    Label2: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    Label3: TLabel;
    DBEdit2: TDBEdit;
    TTTRibaLkDebitore: TStringField;
    Label4: TLabel;
    DBLookupComboBox2: TDBLookupComboBox;
    TTTRibaLkBancaDeb: TStringField;
    Label5: TLabel;
    DBLookupComboBox3: TDBLookupComboBox;
    Label6: TLabel;
    DBEdit3: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBGrid1: TDBGrid;
    DBNavigator2: TDBNavigator;
    SpeedButton2: TSpeedButton;
    ActionList1: TActionList;
    cercami: TAction;
    elencami: TAction;
    Label7: TLabel;
    TTTRibaImportoinlettere: TStringField;
    Label8: TLabel;
    DBEdit4: TDBEdit;
    SpeedButton4: TSpeedButton;
    TTTRibaRiferimento: TStringField;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    TTTRibaGruppo: TFloatField;
    Label9: TLabel;
    DBEdit8: TDBEdit;
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure TTTRibaAfterInsert(DataSet: TDataSet);
    procedure TTTRibaBeforeDelete(DataSet: TDataSet);
    procedure SpeedButton3Click(Sender: TObject);
    procedure cercamiExecute(Sender: TObject);
    procedure elencamiExecute(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure TTTRibaImportoChange(Sender: TField);
  private
    { Private declarations }
    function NumeraRiba(Codice, Anno : String) : longInt;
    function NumToLet(Numero : currency) : String;
  public
    { Public declarations }
  end;

var
  StoricoRb_Form: TStoricoRb_Form;

implementation

{$R *.DFM}

Uses ana_mod, stp_Riba_u, Ucerca, Uelenco;

function TStoricoRb_form.NumeraRiba(Codice, Anno : String) : LongInt;
var
   num : TTable;
   numrit : LongInt;

begin
//Calcola il numeratore assoluto delle Riba

     num := TTable.create(self);
     num.databaseName := 'euro2000';
     num.TableName := 'numera.db';
     num.open;

     if num.findKey([Codice, Anno]) then
        begin
             num.edit;
             num.FieldByName('Valore').Value := num.FieldByName('Valore').Value + 1;
             num.Post;
        end
     else
         begin
             num.insert;
             num.FieldByName('Numeratore').Value := Codice;
             num.FieldByName('Anno').Value := Anno;
             num.FieldByName('Valore').Value := 1;
             num.post;
         end;

     numRit := num.FieldByName('Valore').Value;

     num.close;

     result := numRit;

end;

function TStoricoRb_form.NumToLet(Numero : currency) : String;
var
   unita : array[1..9] of String;
   decina : array [1..9] of String;
   sDecina : array [0..9] of String;
   attrib : array[1..3] of String;
   terzetti : array[1..4] of string;
   strnum : String;
   parola, StrApp : string;
   cifra, i, j : Integer;

begin
//Converte il numero passato in parola
    unita[1] := 'uno';
    unita[2] := 'due';
    unita[3] := 'tre';
    unita[4] := 'quattro';
    unita[5] := 'cinque';
    unita[6] := 'sei';
    unita[7] := 'sette';
    unita[8] := 'otto';
    unita[9] := 'nove';

    decina[1] := 'dieci';
    decina[2] := 'venti';
    decina[3] := 'trenta';
    decina[4] := 'quaranta';
    decina[5] := 'cinquanta';
    decina[6] := 'sessanta';
    decina[7] := 'settanta';
    decina[8] := 'ottanta';
    decina[9] := 'novanta';

    sDecina[0] := 'dieci';
    sDecina[1] := 'undici';
    sDecina[2] := 'dodici';
    sDecina[3] := 'tredici';
    sDecina[4] := 'quattordici';
    sDecina[5] := 'quindici';
    sDecina[6] := 'sedici';
    sDecina[7] := 'diciassette';
    sDecina[8] := 'diciotto';
    sDecina[9] := 'diciannove';

    attrib[1] := 'miliardi';
    attrib[2] := 'milioni';
    attrib[3] := 'mila';

    terzetti[1] := '';
    terzetti[2] := '';
    terzetti[3] := '';
    terzetti[4] := '';

    parola := '';

    if numero > 999999999999 then
       begin
            result := '-errore-';
            exit;
       end;

    if numero = 0 then
       begin
//Se il numero e' zero, e' presto fatto
          result := 'zero';
          exit;
       end;

//Altrimenti...

//Prima convertiamo il numero in string
    strNum := formatFloat('000000000000',numero);

    for i := 1 to 4 do
        for j := 1 to 3 do
                terzetti[i] := terzetti[i] + StrNum[(3*(i-1)) + j];

    for i := 4 DownTo 1 do
        begin
            StrApp := '';
//Se uno dei terzetti e' uguale ad 1
            if strToInt(terzetti[i]) = 1 then
               begin
                    case i of
                         1 : StrApp := 'unmiliardo';
                         2 : StrApp := 'unmilione';
                         3 : StrApp := 'mille';
                         4 : StrApp := 'uno';
                    end;
               end
            else
                begin

                     for j := 1 to 3 do
                         begin

                            cifra := strToInt(terzetti[i][j]);

    //Analisi cifra centinaia del terzetto
                            if j = 1 then
                               begin
                                    if cifra <> 0 then
                                       begin
                                         if cifra > 1 then
                                            strApp := unita[cifra];
                                         StrApp := StrApp + 'cento';
                                         if terzetti[i][2] = '8' then
                                            StrApp := copy(StrApp,1,(length(StrApp) - 1));
                                       end;
                               end;

    //Analisi cifra decine del terzetto
                            if j = 2 then
                               begin
                                    if cifra <> 0 then
                                       begin
                                            if cifra = 1 then
                                               strApp := strApp + sDecina[StrToInt(terzetti[i][3])]
                                            else
                                                begin
                                                     strApp := strApp + decina[cifra];
                                                     if (terzetti[i][3] = '8') or (terzetti[i][3] = '1') then
                                                        StrApp := copy(StrApp,1,(length(StrApp) - 1));
                                                end;
                                       end;
                               end;

    //Analisi cifra unita del terzetto
                            if j = 3 then
                               begin
                                    if terzetti[i][2] <> '1' then
                                       if cifra > 0 then
                                          StrApp := StrApp + unita[cifra];
                               end;

                         end;
                end;

//Aggiunta degli attributi
            if strToInt(terzetti[i]) > 1 then
              if i < 4 then
                 StrApp := StrApp + attrib[i];

            if StrApp <> '' then
              Parola := StrApp + Parola;

        end;


    result := parola;

end;

procedure TStoricoRb_Form.SpeedButton1Click(Sender: TObject);
begin
     release;
end;

procedure TStoricoRb_Form.FormDestroy(Sender: TObject);
begin

     if (TTTRiba.state = DsEdit) or (TTTRiba.state = DsInsert) then
        TTTRiba.post;
     if (TTDRiba.state = DsEdit) or (TTDriba.state = DsInsert) then
        TTDRiba.post;

end;

procedure TStoricoRb_Form.SpeedButton2Click(Sender: TObject);
var
   Totale : currency;
   Riferimento : String;

begin

     if (TTTRiba.state = DsEdit) or (TTTRiba.state = DsInsert) then
        TTTRiba.post;
     if (TTDRiba.state = DsEdit) or (TTDriba.state = DsInsert) then
        TTDRiba.post;

     if TTDriba.RecordCount = 0 then
        begin
             showMessage('Attenzione! Non 

⌨️ 快捷键说明

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