From 9791c9c9614dd038990fa765654252f7f84d8149 Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 25 Jan 2023 15:55:17 -0300 Subject: [PATCH 1/5] =?UTF-8?q?Altera=C3=A7=C3=A3o=20na=20forma=20de=20cha?= =?UTF-8?q?mada=20das=20classes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- samples/delphi/Delphiscal.dpr | 40 +++- samples/delphi/Delphiscal.dproj | 97 ++++++++- samples/delphi/src/Samples.Delphi.Main.dfm | 59 ++--- samples/delphi/src/Samples.Delphi.Main.pas | 102 +++++---- src/Calculos/CST/DelphiFiscal.CST.pas | 113 ++++++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS00.pas | 59 +++++ .../CST/DelphiFiscal.Impostos.CST.ICMS10.pas | 83 +++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS20.pas | 71 ++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS30.pas | 79 +++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS51.pas | 71 ++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS70.pas | 87 ++++++++ .../DelphiFiscal.Calculos.Interfaces.pas | 129 +++++++++++ src/Calculos/DelphiFiscal.Calculos.pas | 61 ++++++ .../ICMS/DelphiFiscal.Calculos.ICMS.pas | 206 ++++++++++++++++++ src/Calculos/ST/DelphiFiscal.Calculos.ST.pas | 154 +++++++++++++ src/Delphiscal.Icms00.pas | 11 +- 16 files changed, 1326 insertions(+), 96 deletions(-) create mode 100644 src/Calculos/CST/DelphiFiscal.CST.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas create mode 100644 src/Calculos/DelphiFiscal.Calculos.Interfaces.pas create mode 100644 src/Calculos/DelphiFiscal.Calculos.pas create mode 100644 src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas create mode 100644 src/Calculos/ST/DelphiFiscal.Calculos.ST.pas diff --git a/samples/delphi/Delphiscal.dpr b/samples/delphi/Delphiscal.dpr index a7b6631..0505c98 100644 --- a/samples/delphi/Delphiscal.dpr +++ b/samples/delphi/Delphiscal.dpr @@ -1,12 +1,46 @@ program Delphiscal; - uses Vcl.Forms, Samples.Delphi.Main in 'src\Samples.Delphi.Main.pas' {FrmMain}, - Delphiscal.Utils in '..\..\src\Delphiscal.Utils.pas'; + Delphiscal.Cofins.Base in '..\..\src\Delphiscal.Cofins.Base.pas', + Delphiscal.Cofins01_02.Intf in '..\..\src\Delphiscal.Cofins01_02.Intf.pas', + Delphiscal.Cofins01_02 in '..\..\src\Delphiscal.Cofins01_02.pas', + Delphiscal.Cofins03.Intf in '..\..\src\Delphiscal.Cofins03.Intf.pas', + Delphiscal.Cofins03 in '..\..\src\Delphiscal.Cofins03.pas', + Delphiscal.Icms.BaseProprio in '..\..\src\Delphiscal.Icms.BaseProprio.pas', + Delphiscal.Icms.BaseST in '..\..\src\Delphiscal.Icms.BaseST.pas', + Delphiscal.Icms.Valor in '..\..\src\Delphiscal.Icms.Valor.pas', + Delphiscal.Icms.Valor.ST in '..\..\src\Delphiscal.Icms.Valor.ST.pas', + Delphiscal.Icms101.Intf in '..\..\src\Delphiscal.Icms101.Intf.pas', + Delphiscal.Icms101 in '..\..\src\Delphiscal.Icms101.pas', + Delphiscal.Icms201.Intf in '..\..\src\Delphiscal.Icms201.Intf.pas', + Delphiscal.Icms201 in '..\..\src\Delphiscal.Icms201.pas', + Delphiscal.Icms202_203.Intf in '..\..\src\Delphiscal.Icms202_203.Intf.pas', + Delphiscal.Icms202_203 in '..\..\src\Delphiscal.Icms202_203.pas', + Delphiscal.Ipi.Base in '..\..\src\Delphiscal.Ipi.Base.pas', + Delphiscal.Ipi50AdValorem.Intf in '..\..\src\Delphiscal.Ipi50AdValorem.Intf.pas', + Delphiscal.Ipi50AdValorem in '..\..\src\Delphiscal.Ipi50AdValorem.pas', + Delphiscal.Ipi50Especifico.Intf in '..\..\src\Delphiscal.Ipi50Especifico.Intf.pas', + Delphiscal.Ipi50Especifico in '..\..\src\Delphiscal.Ipi50Especifico.pas', + Delphiscal.Pis.Base in '..\..\src\Delphiscal.Pis.Base.pas', + Delphiscal.Pis01_02.Intf in '..\..\src\Delphiscal.Pis01_02.Intf.pas', + Delphiscal.Pis01_02 in '..\..\src\Delphiscal.Pis01_02.pas', + Delphiscal.Pis03.Intf in '..\..\src\Delphiscal.Pis03.Intf.pas', + Delphiscal.Pis03 in '..\..\src\Delphiscal.Pis03.pas', + Delphiscal.Utils in '..\..\src\Delphiscal.Utils.pas', + DelphiFiscal.Impostos.CST.ICMS00 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS00.pas', + DelphiFiscal.Impostos.CST.ICMS20 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS20.pas', + DelphiFiscal.Impostos.CST.ICMS51 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS51.pas', + DelphiFiscal.Impostos.CST.ICMS10 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS10.pas', + DelphiFiscal.Impostos.CST.ICMS30 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS30.pas', + DelphiFiscal.Impostos.CST.ICMS70 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS70.pas', + DelphiFiscal.Calculos.ST in '..\..\src\Calculos\ST\DelphiFiscal.Calculos.ST.pas', + DelphiFiscal.Calculos.ICMS in '..\..\src\Calculos\ICMS\DelphiFiscal.Calculos.ICMS.pas', + DelphiFiscal.Calculos.Interfaces in '..\..\src\Calculos\DelphiFiscal.Calculos.Interfaces.pas', + DelphiFiscal.CST in '..\..\src\Calculos\CST\DelphiFiscal.CST.pas', + DelphiFiscal.Calculos in '..\..\src\Calculos\DelphiFiscal.Calculos.pas'; {$R *.res} - begin Application.Initialize; ReportMemoryLeaksOnShutdown := true; diff --git a/samples/delphi/Delphiscal.dproj b/samples/delphi/Delphiscal.dproj index 7a86e2f..6b3a94d 100644 --- a/samples/delphi/Delphiscal.dproj +++ b/samples/delphi/Delphiscal.dproj @@ -111,11 +111,43 @@
FrmMain
dfm + + + + + + + + + + + + + + + + + + + + + + + + + - - Cfg_2 - Base - + + + + + + + + + + + Base @@ -123,6 +155,10 @@ Cfg_1 Base + + Cfg_2 + Base + Delphi.Personality.12 @@ -464,6 +500,11 @@ 1 .framework + + Contents\MacOS + 1 + .framework + 0 @@ -491,6 +532,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .dll;.bpl @@ -519,6 +565,11 @@ 1 .dylib + + Contents\MacOS + 1 + .dylib + 0 .bpl @@ -548,6 +599,10 @@ Contents\Resources\StartUp\ 0 + + Contents\Resources\StartUp\ + 0 + 0 @@ -1085,6 +1140,10 @@ ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1 + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + @@ -1095,6 +1154,10 @@ ..\ 1 + + ..\ + 1 + @@ -1105,6 +1168,10 @@ Contents 1 + + Contents + 1 + @@ -1115,6 +1182,10 @@ Contents\Resources 1 + + Contents\Resources + 1 + @@ -1145,6 +1216,10 @@ Contents\MacOS 1 + + Contents\MacOS + 1 + 0 @@ -1183,17 +1258,17 @@ 1 - + + + + + + - + - - - - - True diff --git a/samples/delphi/src/Samples.Delphi.Main.dfm b/samples/delphi/src/Samples.Delphi.Main.dfm index 836d6fd..f4282b4 100644 --- a/samples/delphi/src/Samples.Delphi.Main.dfm +++ b/samples/delphi/src/Samples.Delphi.Main.dfm @@ -4,23 +4,23 @@ object FrmMain: TFrmMain BorderIcons = [biSystemMenu, biMinimize] BorderStyle = bsSingle Caption = 'Delphiscal - Biblioteca de c'#225'lculos fiscais em Delphi' - ClientHeight = 673 - ClientWidth = 1031 + ClientHeight = 586 + ClientWidth = 1037 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -12 Font.Name = 'Segoe UI' Font.Style = [] - OldCreateOrder = True Position = poScreenCenter + OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 15 object Panel1: TPanel Left = 0 Top = 0 - Width = 1031 - Height = 233 + Width = 1037 + Height = 153 Align = alTop Color = clWhite ParentBackground = False @@ -28,8 +28,8 @@ object FrmMain: TFrmMain object Image1: TImage Left = 0 Top = 0 - Width = 454 - Height = 227 + Width = 297 + Height = 147 Picture.Data = { 0954506E67496D61676589504E470D0A1A0A0000000D49484452000005000000 02800806000000C3F3D5A10000FFFF4944415478DAECBD09705CD975257832F3 @@ -6651,13 +6651,22 @@ object FrmMain: TFrmMain 0228488AE8FF010268E62BD73812670000000049454E44AE426082} Stretch = True end + object Button1: TButton + Left = 920 + Top = 108 + Width = 113 + Height = 39 + Caption = 'Calcular' + TabOrder = 0 + OnClick = Button1Click + end end object PageControl1: TPageControl Left = 0 - Top = 233 - Width = 1031 - Height = 440 - ActivePage = TabSheet5 + Top = 153 + Width = 1037 + Height = 433 + ActivePage = TabSheet1 Align = alClient TabOrder = 1 object TabSheet1: TTabSheet @@ -6799,16 +6808,16 @@ object FrmMain: TFrmMain object lbVBC00: TLabel Left = 168 Top = 61 - Width = 37 + Width = 21 Height = 15 - Caption = 'R$ 0,00' + Caption = '0,00' end object lbVICMS00: TLabel Left = 168 Top = 116 - Width = 37 + Width = 21 Height = 15 - Caption = 'R$ 0,00' + Caption = '0,00' end end object GroupBox2: TGroupBox @@ -6996,10 +7005,6 @@ object FrmMain: TFrmMain object TabSheet2: TTabSheet Caption = 'Icms-ST' ImageIndex = 1 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label37: TLabel Left = 4 Top = 37 @@ -7302,10 +7307,6 @@ object FrmMain: TFrmMain object TabSheet4: TTabSheet Caption = 'CSOSN' ImageIndex = 3 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label16: TLabel Left = 4 Top = 37 @@ -7490,10 +7491,6 @@ object FrmMain: TFrmMain object TabSheet5: TTabSheet Caption = 'IPI' ImageIndex = 4 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label28: TLabel Left = 0 Top = 37 @@ -7625,10 +7622,6 @@ object FrmMain: TFrmMain object TabSheet6: TTabSheet Caption = 'PIS' ImageIndex = 5 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label50: TLabel Left = 8 Top = 37 @@ -7760,10 +7753,6 @@ object FrmMain: TFrmMain object TabSheet7: TTabSheet Caption = 'COFINS' ImageIndex = 6 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 object Label55: TLabel Left = 3 Top = 41 diff --git a/samples/delphi/src/Samples.Delphi.Main.pas b/samples/delphi/src/Samples.Delphi.Main.pas index c0c8794..11f8b19 100644 --- a/samples/delphi/src/Samples.Delphi.Main.pas +++ b/samples/delphi/src/Samples.Delphi.Main.pas @@ -1,11 +1,8 @@ unit Samples.Delphi.Main; - interface - uses Winapi.Windows, Winapi.Messages, - System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, @@ -15,8 +12,8 @@ interface Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Imaging.pngimage, - Vcl.ExtCtrls; - + Vcl.ExtCtrls, + DelphiFiscal.Calculos.Interfaces; type TFrmMain = class(TForm) Panel1: TPanel; @@ -183,6 +180,7 @@ TFrmMain = class(TForm) lbVCOFINS03: TLabel; btCofins0102: TButton; btCofins03: TButton; + Button1: TButton; procedure btIcms00Click(Sender: TObject); procedure btIcms20Click(Sender: TObject); procedure btIcms51Click(Sender: TObject); @@ -198,13 +196,14 @@ TFrmMain = class(TForm) procedure btCofins0102Click(Sender: TObject); procedure btPis03Click(Sender: TObject); procedure btCofins03Click(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure Button1Click(Sender: TObject); + private + FImpostos : iCalculo; end; - var FrmMain: TFrmMain; - implementation - uses Delphiscal.Icms00, Delphiscal.Icms00.Intf, @@ -235,10 +234,8 @@ implementation Delphiscal.Cofins01_02.Intf, Delphiscal.Cofins01_02, Delphiscal.Cofins03.Intf, - Delphiscal.Cofins03; - + Delphiscal.Cofins03, System.SysUtils, DelphiFiscal.Calculos; {$R *.dfm} - procedure TFrmMain.btCofins0102Click(Sender: TObject); var LCofins01_02: ICofins01_02; @@ -251,11 +248,9 @@ procedure TFrmMain.btCofins0102Click(Sender: TObject); StrToFloatDef(edValorDespesas.Text, 0), {} StrToFloatDef(edValorDesconto.Text, 0), {} StrToFloatDef(edAliqCofins.Text, 0)); - lbVBCCOFINS01_02.Caption := LCofins01_02.BaseCofins.ToString; lbVCOFINS01_02.Caption := LCofins01_02.ValorCofins.ToString; end; - procedure TFrmMain.btCofins03Click(Sender: TObject); begin lbVCOFINS03.Caption := TCofins03.New @@ -263,7 +258,6 @@ procedure TFrmMain.btCofins03Click(Sender: TObject); .ValorPorUnidadeTributada(StrToFloatDef(edValorCofinsUn.Text, 0)) .ValorCofins.ToString; end; - procedure TFrmMain.btIcms00Click(Sender: TObject); var LIcms00: IIcms00; @@ -276,11 +270,9 @@ procedure TFrmMain.btIcms00Click(Sender: TObject); StrToFloatDef(edValorDesconto.Text, 0), {} StrToFloatDef(edAliqIcms.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBC00.Caption := LIcms00.BaseIcmsProprio.ToString; lbVICMS00.Caption := LIcms00.ValorIcmsProprio.ToString; end; - procedure TFrmMain.btIcms10Click(Sender: TObject); var LIcms10: IIcms10; @@ -296,14 +288,12 @@ procedure TFrmMain.btIcms10Click(Sender: TObject); StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edPercRedST.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBC10.Caption := LIcms10.ValorBaseIcmsProprio.ToString; lbVICMS10.Caption := LIcms10.ValorIcmsProprio.ToString; lbVBCST10.Caption := LIcms10.ValorBaseIcmsST.ToString; lbVICMSST10.Caption := LIcms10.ValorIcmsST.ToString; lbVICMSSTDeson10.Caption := LIcms10.ValorIcmsSTDesonerado.ToString; end; - procedure TFrmMain.btIcms20Click(Sender: TObject); var LIcms20: IIcms20; @@ -317,12 +307,10 @@ procedure TFrmMain.btIcms20Click(Sender: TObject); StrToFloatDef(edAliqIcms.Text, 0), {} StrToFloatDef(edReducao.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBC20.Caption := LIcms20.BaseReduzidaIcmsProprio.ToString; lbVICMS20.Caption := LIcms20.ValorIcmsProprio.ToString; lbVICMSDESON20.Caption := LIcms20.ValorIcmsDesonerado.ToString; end; - procedure TFrmMain.btIcms30Click(Sender: TObject); var LIcms30: IIcms30; @@ -338,12 +326,10 @@ procedure TFrmMain.btIcms30Click(Sender: TObject); StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edPercRedST.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBCST30.Caption := LIcms30.ValorBaseIcmsST.ToString; lbVICMSST30.Caption := LIcms30.ValorIcmsST.ToString; lbVICMSSTDeson30.Caption := LIcms30.ValorIcmsDesonerado.ToString; end; - procedure TFrmMain.btIcms70Click(Sender: TObject); var LIcms10: IIcms10; @@ -361,13 +347,11 @@ procedure TFrmMain.btIcms70Click(Sender: TObject); StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edPercRedST.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBC70.Caption := LIcms70.ValorBaseReduzidaIcmsProprio.ToString; lbVICMS70.Caption := LIcms70.ValorIcmsProprio.ToString; lbVICMSDeson70.Caption := LIcms70.ValorIcmsDesonerado.ToString; lbVBCST70.Caption := LIcms70.ValorBaseIcmsST.ToString; lbVICMSST70.Caption := LIcms70.ValorIcmsST.ToString; - LIcms10 := TIcms10.Create({} StrToFloatDef(edValorProduto.Text, 0), {} StrToFloatDef(edValorFrete.Text, 0), {} @@ -378,10 +362,8 @@ procedure TFrmMain.btIcms70Click(Sender: TObject); StrToFloatDef(edAliqST.Text, 0), {} StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVICMSSTDeson70.Caption := LIcms70.ValorIcmsSTDesonerado(LIcms10.ValorIcmsST).ToString; end; - procedure TFrmMain.btIpi50AdValoremClick(Sender: TObject); var LIpi50Av: IIpi50AdValorem; @@ -392,11 +374,9 @@ procedure TFrmMain.btIpi50AdValoremClick(Sender: TObject); StrToFloatDef(edValorSeguro.Text, 0), {} StrToFloatDef(edValorDespesas.Text, 0), {} StrToFloatDef(edAliqIpi.Text, 0)); - lbvBCIpi50av.Caption := LIpi50Av.BaseIpi.ToString; lbVIPI50av.Caption := LIpi50Av.ValorIpi.ToString; end; - procedure TFrmMain.btIpi50AliqEspecificaClick(Sender: TObject); begin lbVipi50Especifico.Caption := TIpi50Especifico.New @@ -404,7 +384,6 @@ procedure TFrmMain.btIpi50AliqEspecificaClick(Sender: TObject); .ValorPorUnidadeTributada(StrToFloatDef(edValorIpiUn.Text, 0)) .ValorIpi.ToString; end; - procedure TFrmMain.btPis0102Click(Sender: TObject); var LPis01_02: IPIs01_02; @@ -416,11 +395,9 @@ procedure TFrmMain.btPis0102Click(Sender: TObject); StrToFloatDef(edValorDespesas.Text, 0), {} StrToFloatDef(edValorDesconto.Text, 0), {} StrToFloatDef(edAliqPis.Text, 0)); - lbVBCPIS01_02.Caption := LPis01_02.BasePis.ToString; lbVPIS01_02.Caption := LPis01_02.ValorPis.ToString; end; - procedure TFrmMain.btPis03Click(Sender: TObject); begin lbVPIS03.Caption := TPis03.New @@ -428,6 +405,61 @@ procedure TFrmMain.btPis03Click(Sender: TObject); .ValorPorUnidadeTributada(StrToFloatDef(edValorPisUn.Text, 0)) .ValorPis.ToString; end; +procedure TFrmMain.Button1Click(Sender: TObject); +begin + FImpostos + .ICMS + .ValorProduto(strtofloatdef(edValorProduto.Text,0)) + .ValorFrete(strtofloatdef(edValorFrete.Text,0)) + .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) + .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) + .ValorIPI(strtofloatdef(edValorIpi.Text,0)) + .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)) + .PercentualReducao(strtofloatdef(edReducao.Text,0)) + .PercentualDiferimento(strtofloatdef(edDiferimento.Text,0)) + .AliquotaICMS(strtofloatdef(edAliqIcms.Text,0)) + .ContemReducao(strtofloatdef(edReducao.Text,0) > 0) + .&End + .ST + .AliquotaICMSST(strtofloatdef(edAliqST.Text,0)) + .PercentualMVA(strtofloatdef(edMVA.Text,0)) + .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)); + + lbVICMS00.Caption:= FImpostos.ICMS.ValorICMS.ToString; + lbVBC00.Caption := FImpostos.ICMS.CST.ICMS00.BaseICMSProprio.ToString; + + lbVICMS20.Caption:= FImpostos.ICMS.CST.ICMS20.ValorICMSProprio.ToString; + lbVBC20.Caption := FImpostos.ICMS.CST.ICMS20.BaseICMSProprio.ToString; + lbVICMSDESON20.Caption:= FImpostos.ICMS.CST.ICMS20.ValorICMSDesonerado.ToString; + + lbVBC51.Caption:= FImpostos.ICMS.CST.ICMS51.BaseICMSProprio.ToString; + lbVICMS51.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSProprio.ToString; + lbVICMSOP.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSOperacao.ToString; + lbVICMSDIF.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSDiferido.ToString; + + lbVBC10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorBaseIcmsProprio.ToString; + lbVICMS10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsProprio.ToString; + lbVBCST10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorBaseIcmsST.ToString; + lbVICMSST10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsST.ToString; + lbVICMSSTDeson10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsSTDesonerado.ToString; + + lbVBCST30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorBaseIcmsST.ToString; + lbVICMSST30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorIcmsST.ToString; + lbVICMSSTDeson30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorIcmsDesonerado.ToString; + + lbVBC70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorBaseReduzidaIcmsProprio.ToString; + lbVICMS70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsProprio.ToString; + lbVICMSDeson70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsDesonerado.ToString; + + lbVBCST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorBaseIcmsST.ToString; + lbVICMSST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsST.ToString; + lbVICMSSTDeson70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsSTDesonerado.ToString; +end; + +procedure TFrmMain.FormCreate(Sender: TObject); +begin + FImpostos:= TDelphiFiscalCalculos.New; +end; procedure TFrmMain.btIcms101Click(Sender: TObject); var @@ -441,11 +473,9 @@ procedure TFrmMain.btIcms101Click(Sender: TObject); StrToFloatDef(edValorDesconto.Text, 0), {} StrToFloatDef(edPercentualCreditoSN.Text, 0), {} StrToFloatDef(edReducao.Text, 0)); - lbPCredSN101.Caption := edPercentualCreditoSN.Text; lbVcredSN101.Caption := LIcms101.ValorCreditoSN.ToString; end; - procedure TFrmMain.btIcms201Click(Sender: TObject); var LIcms201: IIcms201; @@ -462,13 +492,11 @@ procedure TFrmMain.btIcms201Click(Sender: TObject); StrToFloatDef(edAliqST.Text, 0), {} StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edPercRedST.Text, 0)); - lbPCredSN201.Caption := edPercentualCreditoSN.Text; lbVCredSN201.Caption := LIcms201.ValorCreditoSN.ToString; lbVBCST201.Caption := LIcms201.ValorBaseIcmsST.ToString; lbVICMSST201.Caption := LIcms201.ValorIcmsST.ToString; end; - procedure TFrmMain.btIcms51Click(Sender: TObject); var LIcms51: IIcms51; @@ -483,13 +511,11 @@ procedure TFrmMain.btIcms51Click(Sender: TObject); StrToFloatDef(edDiferimento.Text, 0), {} StrToFloatDef(edReducao.Text, 0), {} StrToFloatDef(edValorIpi.Text, 0)); - lbVBC51.Caption := LIcms51.BaseIcmsProprio.ToString; lbVICMSOP.Caption := LIcms51.ValorIcmsOperacao.ToString; lbVICMSDIF.Caption := LIcms51.ValorIcmsDiferido.ToString; lbVICMS51.Caption := LIcms51.ValorIcmsProprio.ToString; end; - procedure TFrmMain.btIcms202_203Click(Sender: TObject); var LIcms202_203: IIcms202_203; @@ -505,9 +531,7 @@ procedure TFrmMain.btIcms202_203Click(Sender: TObject); StrToFloatDef(edAliqST.Text, 0), {} StrToFloatDef(edMVA.Text, 0), {} StrToFloatDef(edPercRedST.Text, 0)); - lbVBCST202.Caption := LIcms202_203.ValorBaseIcmsST.ToString; lbVICMSST202.Caption := LIcms202_203.ValorIcmsST.ToString; end; - end. diff --git a/src/Calculos/CST/DelphiFiscal.CST.pas b/src/Calculos/CST/DelphiFiscal.CST.pas new file mode 100644 index 0000000..64e8fc0 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.CST.pas @@ -0,0 +1,113 @@ +unit DelphiFiscal.CST; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalCST = class(TInterfacedObject, iCST) + private + [weak] + FParent : iCalculo; + FICMS00 : iICMS00; + FICMS10 : iICMS10; + FICMS20 : iICMS20; + FICMS30 : iICMS30; + FICMS51 : iICMS51; + FICMS70 : iICMS70; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iCST; + function &End : iCalculo; + function ICMS00 : iICMS00; + function ICMS10 : iICMS10; + function ICMS20 : iICMS20; + function ICMS30 : iICMS30; + function ICMS51 : iICMS51; + function ICMS70 : iICMS70; + end; + +implementation + +uses + DelphiFiscal.Impostos.CST.ICMS00, + DelphiFiscal.Impostos.CST.ICMS10, + DelphiFiscal.Impostos.CST.ICMS20, + DelphiFiscal.Impostos.CST.ICMS30, + DelphiFiscal.Impostos.CST.ICMS51, + DelphiFiscal.Impostos.CST.ICMS70; + +{ TDelphiFiscalCST } + +function TDelphiFiscalCST.&End: iCalculo; +begin + Result:= FParent; +end; + +function TDelphiFiscalCST.ICMS00: iICMS00; +begin + if not Assigned(FICMS00) then + FICMS00:= TICMS00.New(self); + + Result:= FICMS00; +end; + +function TDelphiFiscalCST.ICMS10: iICMS10; +begin + if not Assigned(FICMS10) then + FICMS10:= TICMS10.New(self); + + Result:= FICMS10; +end; + +function TDelphiFiscalCST.ICMS20: iICMS20; +begin + if not Assigned(FICMS20) then + FICMS20:= TICMS20.New(self); + + Result:= FICMS20; +end; + +function TDelphiFiscalCST.ICMS30: iICMS30; +begin + if not Assigned(FICMS30) then + FICMS30:= TICMS30.New(self); + + Result:= FICMS30; +end; + +function TDelphiFiscalCST.ICMS51: iICMS51; +begin + if not Assigned(FICMS51) then + FICMS51:= TICMS51.New(self); + + Result:= FICMS51; +end; + +function TDelphiFiscalCST.ICMS70: iICMS70; +begin + if not Assigned(FICMS70) then + FICMS70:= TICMS70.New(self); + + Result:= FICMS70; +end; + +constructor TDelphiFiscalCST.create(Parent : iCalculo); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalCST.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalCST.New(Parent : iCalculo) : iCST; +begin + Result:= Self.create(Parent); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas new file mode 100644 index 0000000..70f6aa7 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas @@ -0,0 +1,59 @@ +unit DelphiFiscal.Impostos.CST.ICMS00; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS00 = class(TInterfacedObject, iICMS00) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS00; + function BaseICMSProprio : double; + function ValorICMSProprio : double; + Function &End : iCST; + end; + +implementation + +{ TICMS00 } + +uses Delphiscal.Utils; + +function TICMS00.BaseICMSProprio: double; +begin + Result:= FParent.&End.ICMS.BaseICMSNormal; +end; + +constructor TICMS00.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS00.Destroy; +begin + + inherited; +end; + +function TICMS00.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS00.New(Parent: iCST): iICMS00; +begin + Result:= Self.Create(Parent); +end; + +function TICMS00.ValorICMSProprio : double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas new file mode 100644 index 0000000..fefe3df --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas @@ -0,0 +1,83 @@ +unit DelphiFiscal.Impostos.CST.ICMS10; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS10 = class(TInterfacedObject, iICMS10) + private + [weak] + FParent : iCST; + function BaseICMSProprio: double; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS10; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsSTDesonerado: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS10 } + +uses Delphiscal.Utils; + +function TICMS10.BaseICMSProprio: double; +begin + Result:= FParent.&End.ICMS.BaseICMSNormal; +end; + +constructor TICMS10.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS10.Destroy; +begin + + inherited; +end; + +function TICMS10.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS10.New(Parent: iCST): iICMS10; +begin + Result:= Self.Create(Parent); +end; + +function TICMS10.ValorBaseIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSNormal, 2); +end; + +function TICMS10.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSST, 2); +end; + +function TICMS10.ValorICMSProprio : double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); +end; + +function TICMS10.ValorIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.ValorICMSSTProprio, 2); +end; + +function TICMS10.ValorIcmsSTDesonerado: Double; +begin + Result := RoundABNT(FParent.&End.ST.ValorICMSST - FParent.&End.ST.ValorICMSSTProprio, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas new file mode 100644 index 0000000..0f59b99 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas @@ -0,0 +1,71 @@ +unit DelphiFiscal.Impostos.CST.ICMS20; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS20 = class(TInterfacedObject, iICMS20) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS20; + function BaseICMSProprio : double; + function ValorICMSProprio : double; + function ValorICMSDesonerado : double; + function ValorICMSReduzido : double; + Function &End : iCST; + end; + +implementation + +{ TICMS20 } + +uses Delphiscal.Utils; + +function TICMS20.BaseICMSProprio: double; +begin + Result:= FParent.&End.ICMS.BaseICMSProprio; +end; + +constructor TICMS20.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS20.Destroy; +begin + + inherited; +end; + +function TICMS20.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS20.New(Parent: iCST): iICMS20; +begin + Result:= Self.Create(Parent); +end; + +function TICMS20.ValorICMSProprio : double; +begin + Result:= RoundABNT((FParent.&End.ICMS.BaseICMSProprio * (FParent.&End.ICMS.AliquotaICMS / 100)), 2); +end; + +function TICMS20.ValorICMSReduzido: double; +begin + Result:= RoundABNT((FParent.&End.ICMS.BaseICMSReduzido * (FParent.&End.ICMS.AliquotaICMS / 100)), 2); +end; + +function TICMS20.ValorICMSDesonerado: double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS - ValorICMSReduzido, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas new file mode 100644 index 0000000..3c02f6d --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas @@ -0,0 +1,79 @@ +unit DelphiFiscal.Impostos.CST.ICMS30; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS30 = class(TInterfacedObject, iICMS30) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS30; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsDesonerado: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS30 } + +uses Delphiscal.Utils; + +constructor TICMS30.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS30.Destroy; +begin + + inherited; +end; + +function TICMS30.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS30.New(Parent: iCST): iICMS30; +begin + Result:= Self.Create(Parent); +end; + +function TICMS30.ValorBaseIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSNormal, 2); +end; + +function TICMS30.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSST, 2); +end; + +function TICMS30.ValorIcmsDesonerado: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); +end; + +function TICMS30.ValorICMSProprio : double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); +end; + +function TICMS30.ValorIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.ValorICMSSTProprio, 2); +end; + + +end. + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas new file mode 100644 index 0000000..8cf725b --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas @@ -0,0 +1,71 @@ +unit DelphiFiscal.Impostos.CST.ICMS51; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS51 = class(TInterfacedObject, iICMS51) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS51; + function BaseICMSProprio : double; + function ValorICMSOperacao : double; + function ValorICMSDiferido : double; + function ValorICMSProprio : double; + Function &End : iCST; + end; + +implementation + +{ TICMS51 } + +uses Delphiscal.Utils; + +function TICMS51.BaseICMSProprio: double; +begin + Result:= FParent.&End.ICMS.BaseICMSProprio; +end; + +constructor TICMS51.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS51.Destroy; +begin + + inherited; +end; + +function TICMS51.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS51.New(Parent: iCST): iICMS51; +begin + Result:= Self.Create(Parent); +end; + +function TICMS51.ValorICMSDiferido: double; +begin + result:= RoundABNT(ValorICMSOperacao * (FParent.&End.ICMS.PercentualDiferimento / 100), 2); +end; + +function TICMS51.ValorICMSOperacao: double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio * (FParent.&End.ICMS.AliquotaICMS / 100), 2); +end; + +function TICMS51.ValorICMSProprio : double; +begin + Result:= RoundABNT((ValorICMSOperacao - ValorICMSDiferido), 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas new file mode 100644 index 0000000..c438899 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas @@ -0,0 +1,87 @@ +unit DelphiFiscal.Impostos.CST.ICMS70; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS70 = class(TInterfacedObject, iICMS70) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS70; + function ValorBaseReduzidaIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorIcmsDesonerado: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsSTDesonerado : Double; + Function &End : iCST; + end; + +implementation + +{ TICMS70 } + +uses Delphiscal.Utils; + +constructor TICMS70.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS70.Destroy; +begin + + inherited; +end; + +function TICMS70.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS70.New(Parent: iCST): iICMS70; +begin + Result:= Self.Create(Parent); +end; + +function TICMS70.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); +end; + +function TICMS70.ValorBaseReduzidaIcmsProprio: Double; +begin + result:= RoundABNT(FParent.&End.ICMS.BaseICMSReduzido, 2); +end; + +function TICMS70.ValorIcmsDesonerado: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMS - FParent.&End.ICMS.ValorICMSProprio, 2); +end; + +function TICMS70.ValorICMSProprio : double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); +end; + +function TICMS70.ValorIcmsST: Double; +var + lValor : double; +begin + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + result:= RoundABNT(lValor - ValorIcmsProprio, 2); +end; + +function TICMS70.ValorIcmsSTDesonerado: Double; +begin + Result := RoundABNT(FParent.&End.ST.ValorICMSST - ValorIcmsST, 2); +end; + +end. + diff --git a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas new file mode 100644 index 0000000..b3341ff --- /dev/null +++ b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas @@ -0,0 +1,129 @@ +unit DelphiFiscal.Calculos.Interfaces; + +interface + +type + iST = interface; + iICMS = interface; + iCST = interface; + iICMS00 = interface; + iICMS10 = interface; + iICMS20 = interface; + iICMS51 = interface; + iICMS30 = interface; + iICMS70 = interface; + + iCalculo = interface + ['{15AE0E74-C00A-41BC-8D42-ED45CE6D957B}'] + function ST : iST; + function ICMS : iICMS; + end; + + iST = interface + ['{CADDC667-BDE5-4197-AA5B-1D892268ED2A}'] + function AliquotaICMSST(aValue : double) : iST; overload; + function AliquotaICMSST : double; overload; + function PercentualReducaoBaseICMSST(aValue : double) : iST; + function PercentualMVA(aValue : double) : iST; + function BaseICMSST : double; + function BaseICMSSTCST : double; + function ValorICMSSTProprio : double; + function ValorICMSST : double; + function &End : iCalculo; + end; + + iICMS = interface + ['{3995FD99-145B-4F99-8E95-2172ED50248A}'] + function CST : iCST; + function ValorProduto(aValue : double) : iICMS; + function ValorFrete(aValue : double) : iICMS; + function ValorSeguro(aValue : double) : iICMS; + function ValorDespesasAcessorias(aValue : double) : iICMS; + function ValorIPI(aValue : double) : iICMS; overload; + function ValorIPI : double; overload; + function ValorDescontos(aValue : double) : iICMS; + function PercentualReducao(aValue : double) : iICMS; + function PercentualDiferimento(aValue : double) : iICMS; overload; + function PercentualDiferimento : double; overload; + function AliquotaICMS(aValue : double) : iICMS; overload; + function AliquotaICMS : Double; overload; + function ContemReducao(aValue : boolean) : iICMS; overload; + function ContemReducao : boolean; overload; + function BaseICMSProprio : double; + function BaseICMSNormal : double; + function BaseICMSReduzido : double; + function ValorICMS : Double; + function ValorICMSProprio : double; + function &End : iCalculo; + end; + + iCST = interface + ['{1C99705A-9279-4E2D-923D-909F46F52C09}'] + function ICMS00 : iICMS00; + function ICMS10 : iICMS10; + function ICMS20 : iICMS20; + function ICMS30 : iICMS30; + function ICMS51 : iICMS51; + function ICMS70 : iICMS70; + function &End : iCalculo; + end; + + iICMS00 = interface + ['{D9FBD4DD-D640-4A7F-BFED-E60C921A357F}'] + function BaseICMSProprio : double; + function ValorICMSProprio : double; + Function &End : iCST; + end; + + iICMS10 = interface + ['{12C3E9A1-48C5-46B8-9422-25C120376564}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsSTDesonerado: Double; + Function &End : iCST; + end; + + iICMS20 = interface + ['{82A4F07F-0396-49C5-99E0-77765B7EE081}'] + function BaseICMSProprio : double; + function ValorICMSProprio : double; + function ValorICMSDesonerado : double; + function ValorICMSReduzido : double; + Function &End : iCST; + end; + + iICMS30 = interface + ['{27FD32AE-E2DA-4C37-93C7-C6BE65B4C8CB}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsDesonerado: Double; + Function &End : iCST; + end; + + iICMS51 = interface + ['{75826AA1-CB05-4819-BA39-AEA73886AA90}'] + function BaseICMSProprio : double; + function ValorICMSOperacao : double; + function ValorICMSDiferido : double; + function ValorICMSProprio : double; + Function &End : iCST; + end; + + iICMS70 = interface + ['{A5D9D047-AA83-4C56-9434-901F489A1EEB}'] + function ValorBaseReduzidaIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsDesonerado: Double; + function ValorIcmsSTDesonerado : Double; + Function &End : iCST; + end; + +implementation + +end. diff --git a/src/Calculos/DelphiFiscal.Calculos.pas b/src/Calculos/DelphiFiscal.Calculos.pas new file mode 100644 index 0000000..ecb3ebc --- /dev/null +++ b/src/Calculos/DelphiFiscal.Calculos.pas @@ -0,0 +1,61 @@ +unit DelphiFiscal.Calculos; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) + private + FICSM : iICMS; + FST : iST; + public + constructor create; + destructor destroy; override; + class function New : iCalculo; + function ST : iST; + function ICMS : iICMS; + end; + +implementation + +uses + DelphiFiscal.Calculos.ICMS, + DelphiFiscal.Calculos.ST; + +{ TDelphiFiscalCalculos } + +constructor TDelphiFiscalCalculos.create; +begin + +end; + +destructor TDelphiFiscalCalculos.destroy; +begin + + inherited; +end; + +function TDelphiFiscalCalculos.ICMS: iICMS; +begin + if not Assigned(FICSM) then + FICSM:= TDelphiFiscalICMS.New(self); + + Result:= FICSM; +end; + +class function TDelphiFiscalCalculos.New: iCalculo; +begin + Result:= Self.create +end; + +function TDelphiFiscalCalculos.ST: iST; +begin + if not Assigned(FST) then + FST:= TDelphiFiscalST.New(self); + + Result:= FST; +end; + +end. diff --git a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas new file mode 100644 index 0000000..81ea493 --- /dev/null +++ b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas @@ -0,0 +1,206 @@ +unit DelphiFiscal.Calculos.ICMS; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalICMS = class(TInterfacedObject, iICMS) + private + [weak] + FParent : iCalculo; + FCST : iCST; + + FValorProduto: Double; + FValorfrete: Double; + FValorSeguro: Double; + FDespesasAcessorias: Double; + FValorIpi: Double; + FValorDesconto: Double; + FPercentualReducao: Double; + FBaseICMSNormal : Double; + FContemReducao : boolean; + FAliquotaICMS : Double; + FPercentualDiferimento : double; + + FAliquotaICMSST : double; + FPercentualReducaoBaseICMSST : double; + FPercentualMVA : double; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iICMS; + function &End : iCalculo; + + function CST : iCST; + function ValorProduto(aValue : double) : iICMS; + function ValorFrete(aValue : double) : iICMS; + function ValorSeguro(aValue : double) : iICMS; + function ValorDespesasAcessorias(aValue : double) : iICMS; + function ValorIPI(aValue : double) : iICMS; overload; + function ValorIPI : double; overload; + function ValorDescontos(aValue : double) : iICMS; + function PercentualReducao(aValue : double) : iICMS; + function PercentualDiferimento(aValue : double) : iICMS; overload; + function PercentualDiferimento : double; overload; + function AliquotaICMS(aValue : double) : iICMS; overload; + function AliquotaICMS : Double; overload; + function BaseICMSProprio : double; + function BaseICMSNormal : double; + function BaseICMSReduzido : double; + function ContemReducao(aValue : boolean) : iICMS; overload; + function ContemReducao : boolean; overload; + function ValorICMS : Double; + function ValorICMSProprio : double; + end; + +implementation + +{ TDelphiFiscalST } + +uses Delphiscal.Utils, DelphiFiscal.CST; + +constructor TDelphiFiscalICMS.create(Parent : iCalculo); +begin + FParent:= Parent; +end; + +function TDelphiFiscalICMS.CST: iCST; +begin + if not Assigned(FCST) then + FCST:= TDelphiFiscalCST.New(FParent); + + Result:= FCST; +end; + +destructor TDelphiFiscalICMS.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalICMS.New(Parent: iCalculo): iICMS; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalICMS.AliquotaICMS(aValue: double): iICMS; +begin + Result:= Self; + FAliquotaICMS:= aValue; +end; + +function TDelphiFiscalICMS.&End: iCalculo; +begin + Result:= FParent; +end; + +function TDelphiFiscalICMS.AliquotaICMS: Double; +begin + Result:= FAliquotaICMS; +end; + +function TDelphiFiscalICMS.BaseICMSNormal : double; +begin + Result:= RoundABNT(FValorProduto + FValorfrete + FValorSeguro + FDespesasAcessorias + FValorIpi - FValorDesconto, 2); +end; + +function TDelphiFiscalICMS.BaseICMSProprio : double; +begin + if FContemReducao then + Result:= BaseICMSReduzido + else + Result:= BaseICMSNormal; +end; + +function TDelphiFiscalICMS.BaseICMSReduzido : double; +var + LBaseIcms: Double; +begin + LBaseIcms:= BaseICMSNormal; + Result := RoundABNT((LBaseIcms - (LBaseIcms * (FPercentualReducao / 100))), 2); +end; + +function TDelphiFiscalICMS.ContemReducao: boolean; +begin + Result:= FContemReducao; +end; + +function TDelphiFiscalICMS.ContemReducao(aValue: boolean): iICMS; +begin + Result:= self; + FContemReducao:= aValue; +end; + +function TDelphiFiscalICMS.ValorDescontos(aValue: double): iICMS; +begin + Result:= self; + FValorDesconto:= aValue; +end; + +function TDelphiFiscalICMS.ValorDespesasAcessorias( + aValue: double): iICMS; +begin + Result:= self; + FDespesasAcessorias:= aValue; +end; + +function TDelphiFiscalICMS.ValorFrete(aValue: double): iICMS; +begin + Result:= self; + FValorfrete:= aValue; +end; + +function TDelphiFiscalICMS.ValorICMS: Double; +begin + Result:= RoundABNT((BaseICMSNormal * (AliquotaIcms / 100)), 2); +end; + +function TDelphiFiscalICMS.ValorICMSProprio: double; +begin + Result:= RoundABNT((BaseICMSProprio * (AliquotaIcms / 100)), 2); +end; + +function TDelphiFiscalICMS.ValorIPI: double; +begin + Result:= FValorIpi; +end; + +function TDelphiFiscalICMS.ValorIPI(aValue: double): iICMS; +begin + Result:= self; + FValorIpi:= aValue; +end; + +function TDelphiFiscalICMS.PercentualDiferimento: double; +begin + Result:= FPercentualDiferimento; +end; + +function TDelphiFiscalICMS.PercentualDiferimento(aValue: double): iICMS; +begin + Result:= self; + FPercentualDiferimento:= aValue; +end; + +function TDelphiFiscalICMS.PercentualReducao(aValue: double): iICMS; +begin + Result:= self; + FPercentualReducao:= aValue; +end; + +function TDelphiFiscalICMS.ValorProduto(aValue: double): iICMS; +begin + Result:= self; + FValorProduto:= aValue; +end; + +function TDelphiFiscalICMS.ValorSeguro(aValue: double): iICMS; +begin + Result:= self; + FValorSeguro:= aValue; +end; + +end. + diff --git a/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas b/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas new file mode 100644 index 0000000..ab5e823 --- /dev/null +++ b/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas @@ -0,0 +1,154 @@ +unit DelphiFiscal.Calculos.ST; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalST = class(TInterfacedObject, iST) + private + [weak] + FParent : iCalculo; + FAliquotaICMSST : double; + FPercentualReducaoBaseICMSST : double; + FPercentualMVA : double; + + function CalcularBaseNormalST: Double; + function CalcularBaseReduzidaST: Double; + function CalcularValorNormalIcmsST: Double; + function CalcularValorReduzidoIcmsST: Double; + function CalcularBaseNormalSTCST: Double; + function CalcularBaseReduzidaSTCST: Double; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iST; + function AliquotaICMSST(aValue : double) : iST; overload; + function AliquotaICMSST : double; overload; + function PercentualReducaoBaseICMSST(aValue : double) : iST; + function PercentualMVA(aValue : double) : iST; + function BaseICMSST : double; + function BaseICMSSTCST : double; + function ValorICMSSTProprio : double; + function ValorICMSST : double; + function &End : iCalculo; + end; + +implementation + +{ TDelphiFiscalST } + +uses Delphiscal.Utils; + +function TDelphiFiscalST.&End: iCalculo; +begin + Result:= FParent; +end; + +constructor TDelphiFiscalST.create(Parent : iCalculo); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalST.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalST.New(Parent: iCalculo): iST; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalST.AliquotaICMSST: double; +begin + Result:= FAliquotaICMSST; +end; + +function TDelphiFiscalST.PercentualReducaoBaseICMSST( + aValue: double): iST; +begin + Result:= Self; + FPercentualReducaoBaseICMSST:= aValue; +end; + +function TDelphiFiscalST.BaseICMSSTCST: double; +begin + if FPercentualReducaoBaseICMSST > 0 then + Result := CalcularBaseReduzidaSTCST + else + Result := CalcularBaseNormalSTCST; +end; + +function TDelphiFiscalST.CalcularBaseNormalSTCST: Double; +begin + Result := RoundABNT((FParent.ICMS.BaseICMSProprio + FParent.ICMS.ValorIPI) * (1 + (FPercentualMVA / 100)), 2); +end; + +function TDelphiFiscalST.CalcularBaseReduzidaSTCST: Double; +var + LBaseIcmsST: Double; +begin + LBaseIcmsST := RoundABNT(FParent.ICMS.BaseICMSProprio * (1 + (FPercentualMVA / 100)), 2); + Result := RoundABNT((LBaseIcmsST - RoundABNT((LBaseIcmsST * (FPercentualReducaoBaseICMSST / 100)), 2) + FParent.ICMS.ValorIPI), 2); +end; + +function TDelphiFiscalST.BaseICMSST: double; +begin + if FPercentualReducaoBaseICMSST > 0 then + Result := CalcularBaseReduzidaST + else + Result := CalcularBaseNormalST; +end; + +function TDelphiFiscalST.CalcularBaseNormalST: Double; +begin + Result := RoundABNT((FParent.ICMS.BaseICMSNormal + FParent.ICMS.ValorIPI) * (1 + (FPercentualMVA / 100)), 2); +end; + +function TDelphiFiscalST.CalcularBaseReduzidaST: Double; +var + LBaseIcmsST: Double; +begin + LBaseIcmsST := RoundABNT(FParent.ICMS.BaseICMSNormal * (1 + (FPercentualMVA / 100)), 2); + Result := RoundABNT((LBaseIcmsST - RoundABNT((LBaseIcmsST * (FPercentualReducaoBaseICMSST / 100)), 2) + FParent.ICMS.ValorIPI), 2); +end; + +function TDelphiFiscalST.PercentualMVA(aValue: double): iST; +begin + Result:= Self; + FPercentualMVA:= aValue; +end; + +function TDelphiFiscalST.AliquotaICMSST(aValue: double): iST; +begin + Result:= Self; + FAliquotaICMSST:= aValue; +end; + +function TDelphiFiscalST.ValorICMSSTProprio: double; +begin + if FPercentualReducaoBaseICMSST > 0 then + Result := CalcularValorReduzidoIcmsST + else + Result := CalcularValorNormalIcmsST; +end; + +function TDelphiFiscalST.ValorICMSST: double; +begin + Result := CalcularValorNormalIcmsST; +end; + +function TDelphiFiscalST.CalcularValorNormalIcmsST: Double; +begin + Result := RoundABNT((CalcularBaseNormalST * (FAliquotaICMSST / 100) - FParent.ICMS.ValorICMS), 2); +end; + +function TDelphiFiscalST.CalcularValorReduzidoIcmsST: Double; +begin + Result := RoundABNT((CalcularBaseReduzidaST * (FAliquotaICMSST / 100) - FParent.ICMS.ValorICMS), 2); +end; + +end. diff --git a/src/Delphiscal.Icms00.pas b/src/Delphiscal.Icms00.pas index 39a40b0..5e83a9b 100644 --- a/src/Delphiscal.Icms00.pas +++ b/src/Delphiscal.Icms00.pas @@ -1,8 +1,9 @@ unit Delphiscal.Icms00; - interface -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms00.Intf; +uses Delphiscal.Icms.BaseProprio, + Delphiscal.Icms.Valor, + Delphiscal.Icms00.Intf; type TIcms00 = class(TInterfacedObject, IIcms00) @@ -18,7 +19,6 @@ TIcms00 = class(TInterfacedObject, IIcms00) const AValorIpi: Double = 0): IIcms00; destructor Destroy; override; end; - implementation uses Delphiscal.Utils; @@ -27,7 +27,6 @@ function TIcms00.BaseIcmsProprio: Double; begin Result := RoundABNT(FBaseIcmsProprio.CalcularBaseIcmsProprio, 2); end; - constructor TIcms00.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS: Double; const AValorIpi: Double = 0); begin @@ -35,24 +34,20 @@ constructor TIcms00.Create(const AValorProduto, AValorFrete, AValorSeguro, ADesp AValorIpi); FValorIcms := TValorIcms.Create(FBaseIcmsProprio, AALiquotaICMS); end; - destructor TIcms00.Destroy; begin FValorIcms.Free; FBaseIcmsProprio.Free; inherited; end; - class function TIcms00.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, AValorIpi: Double): IIcms00; begin Result := TIcms00.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, AValorIpi); end; - function TIcms00.ValorIcmsProprio: Double; begin Result := RoundABNT(FValorIcms.GetValorIcms, 2); end; - end. From d28df1283fba0017b8d14b642e1641b4b1cdc63e Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 14 Feb 2023 11:59:52 -0300 Subject: [PATCH 2/5] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20de=20mais=20CST?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- samples/delphi/Delphiscal.dpr | 14 +-- samples/delphi/Delphiscal.dproj | 12 +-- samples/delphi/src/Samples.Delphi.Main.dfm | 2 +- samples/delphi/src/Samples.Delphi.Main.pas | 31 +++++-- src/Calculos/CST/DelphiFiscal.CST.pas | 59 ++++++++++++- .../CST/DelphiFiscal.Impostos.CST.ICMS101.pas | 59 +++++++++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS201.pas | 86 ++++++++++++++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS202.pas | 74 ++++++++++++++++ .../CST/DelphiFiscal.Impostos.CST.ICMS203.pas | 74 ++++++++++++++++ .../CST/DelphiFiscal.Impostos.CST.IPI50.pas | 66 ++++++++++++++ .../DelphiFiscal.Calculos.Interfaces.pas | 80 ++++++++++++++++- src/Calculos/DelphiFiscal.Calculos.pas | 70 ++++++++++++++- .../ICMS/DelphiFiscal.Calculos.ICMS.pas | 60 ++++++------- .../IPI/DelphiFiscal.Calculos.IPI.pas | 88 +++++++++++++++++++ 14 files changed, 716 insertions(+), 59 deletions(-) create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas create mode 100644 src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas diff --git a/samples/delphi/Delphiscal.dpr b/samples/delphi/Delphiscal.dpr index 0505c98..9e017c6 100644 --- a/samples/delphi/Delphiscal.dpr +++ b/samples/delphi/Delphiscal.dpr @@ -11,12 +11,6 @@ uses Delphiscal.Icms.BaseST in '..\..\src\Delphiscal.Icms.BaseST.pas', Delphiscal.Icms.Valor in '..\..\src\Delphiscal.Icms.Valor.pas', Delphiscal.Icms.Valor.ST in '..\..\src\Delphiscal.Icms.Valor.ST.pas', - Delphiscal.Icms101.Intf in '..\..\src\Delphiscal.Icms101.Intf.pas', - Delphiscal.Icms101 in '..\..\src\Delphiscal.Icms101.pas', - Delphiscal.Icms201.Intf in '..\..\src\Delphiscal.Icms201.Intf.pas', - Delphiscal.Icms201 in '..\..\src\Delphiscal.Icms201.pas', - Delphiscal.Icms202_203.Intf in '..\..\src\Delphiscal.Icms202_203.Intf.pas', - Delphiscal.Icms202_203 in '..\..\src\Delphiscal.Icms202_203.pas', Delphiscal.Ipi.Base in '..\..\src\Delphiscal.Ipi.Base.pas', Delphiscal.Ipi50AdValorem.Intf in '..\..\src\Delphiscal.Ipi50AdValorem.Intf.pas', Delphiscal.Ipi50AdValorem in '..\..\src\Delphiscal.Ipi50AdValorem.pas', @@ -38,7 +32,13 @@ uses DelphiFiscal.Calculos.ICMS in '..\..\src\Calculos\ICMS\DelphiFiscal.Calculos.ICMS.pas', DelphiFiscal.Calculos.Interfaces in '..\..\src\Calculos\DelphiFiscal.Calculos.Interfaces.pas', DelphiFiscal.CST in '..\..\src\Calculos\CST\DelphiFiscal.CST.pas', - DelphiFiscal.Calculos in '..\..\src\Calculos\DelphiFiscal.Calculos.pas'; + DelphiFiscal.Calculos in '..\..\src\Calculos\DelphiFiscal.Calculos.pas', + DelphiFiscal.Impostos.CST.ICMS101 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS101.pas', + DelphiFiscal.Impostos.CST.ICMS201 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS201.pas', + DelphiFiscal.Impostos.CST.ICMS202 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS202.pas', + DelphiFiscal.Impostos.CST.ICMS203 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS203.pas', + DelphiFiscal.Calculos.IPI in '..\..\src\Calculos\IPI\DelphiFiscal.Calculos.IPI.pas', + DelphiFiscal.Impostos.CST.IPI50 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.IPI50.pas'; {$R *.res} begin diff --git a/samples/delphi/Delphiscal.dproj b/samples/delphi/Delphiscal.dproj index 6b3a94d..68259f6 100644 --- a/samples/delphi/Delphiscal.dproj +++ b/samples/delphi/Delphiscal.dproj @@ -120,12 +120,6 @@ - - - - - - @@ -148,6 +142,12 @@ + + + + + + Base diff --git a/samples/delphi/src/Samples.Delphi.Main.dfm b/samples/delphi/src/Samples.Delphi.Main.dfm index f4282b4..ff6a83c 100644 --- a/samples/delphi/src/Samples.Delphi.Main.dfm +++ b/samples/delphi/src/Samples.Delphi.Main.dfm @@ -6666,7 +6666,7 @@ object FrmMain: TFrmMain Top = 153 Width = 1037 Height = 433 - ActivePage = TabSheet1 + ActivePage = TabSheet5 Align = alClient TabOrder = 1 object TabSheet1: TTabSheet diff --git a/samples/delphi/src/Samples.Delphi.Main.pas b/samples/delphi/src/Samples.Delphi.Main.pas index 11f8b19..09c2551 100644 --- a/samples/delphi/src/Samples.Delphi.Main.pas +++ b/samples/delphi/src/Samples.Delphi.Main.pas @@ -408,22 +408,28 @@ procedure TFrmMain.btPis03Click(Sender: TObject); procedure TFrmMain.Button1Click(Sender: TObject); begin FImpostos + .ValorProduto(strtofloatdef(edValorProduto.Text,0)) + .ValorFrete(strtofloatdef(edValorFrete.Text,0)) + .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) + .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) .ICMS - .ValorProduto(strtofloatdef(edValorProduto.Text,0)) - .ValorFrete(strtofloatdef(edValorFrete.Text,0)) - .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) - .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) .ValorIPI(strtofloatdef(edValorIpi.Text,0)) .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)) .PercentualReducao(strtofloatdef(edReducao.Text,0)) .PercentualDiferimento(strtofloatdef(edDiferimento.Text,0)) .AliquotaICMS(strtofloatdef(edAliqIcms.Text,0)) + .PercentualCreditoICMSSN(strtofloatdef(edPercentualCreditoSN.Text,0)) .ContemReducao(strtofloatdef(edReducao.Text,0) > 0) .&End .ST .AliquotaICMSST(strtofloatdef(edAliqST.Text,0)) .PercentualMVA(strtofloatdef(edMVA.Text,0)) - .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)); + .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)) + .&End + .IPI + .AliquotaIPI(strtofloatdef(edAliqIpi.Text,0)) + .ValorIPIPorUnidade(strtofloatdef(edValorIpiUn.Text,0)) + .QtdeIPITributada(strtofloatdef(edQtdeIpiTributada.Text,0)); lbVICMS00.Caption:= FImpostos.ICMS.ValorICMS.ToString; lbVBC00.Caption := FImpostos.ICMS.CST.ICMS00.BaseICMSProprio.ToString; @@ -454,6 +460,21 @@ procedure TFrmMain.Button1Click(Sender: TObject); lbVBCST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorBaseIcmsST.ToString; lbVICMSST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsST.ToString; lbVICMSSTDeson70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsSTDesonerado.ToString; + + lbPCredSN101.Caption:= FImpostos.ICMS.PercentualCreditoICMSSN.ToString; + lbVcredSN101.Caption:= FImpostos.ICMS.CST.ICMS101.ValorCreditoSN.ToString; + + lbPCredSN201.Caption:= FImpostos.ICMS.PercentualCreditoICMSSN.ToString; + lbVCredSN201.Caption:= FImpostos.ICMS.CST.ICMS201.ValorCreditoSN.ToString; + lbVBCST201.Caption := FImpostos.ICMS.CST.ICMS201.ValorBaseIcmsST.ToString; + lbVICMSST201.Caption:= FImpostos.ICMS.CST.ICMS201.ValorIcmsST.ToString; + + lbVBCST202.Caption := FImpostos.ICMS.CST.ICMS202.ValorBaseIcmsST.ToString; + lbVICMSST202.Caption:= FImpostos.ICMS.CST.ICMS202.ValorIcmsST.ToString; + + lbvBCIpi50av.Caption:= FImpostos.ICMS.CST.IPI50.BaseIpi.ToString; + lbVIPI50av.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpi.ToString; + lbVipi50Especifico.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpiEspecifico.ToString; end; procedure TFrmMain.FormCreate(Sender: TObject); diff --git a/src/Calculos/CST/DelphiFiscal.CST.pas b/src/Calculos/CST/DelphiFiscal.CST.pas index 64e8fc0..c6fef05 100644 --- a/src/Calculos/CST/DelphiFiscal.CST.pas +++ b/src/Calculos/CST/DelphiFiscal.CST.pas @@ -16,17 +16,27 @@ TDelphiFiscalCST = class(TInterfacedObject, iCST) FICMS30 : iICMS30; FICMS51 : iICMS51; FICMS70 : iICMS70; + FICMS101 : iICMS101; + FICMS201 : iICMS201; + FICMS202 : iICMS202; + FICMS203 : iICMS203; + FIPI50 : iIPI50; public constructor create(Parent : iCalculo); destructor destroy; override; class function New(Parent : iCalculo) : iCST; - function &End : iCalculo; function ICMS00 : iICMS00; function ICMS10 : iICMS10; function ICMS20 : iICMS20; function ICMS30 : iICMS30; function ICMS51 : iICMS51; function ICMS70 : iICMS70; + function ICMS101 : iICMS101; + function ICMS201 : iICMS201; + function ICMS202 : iICMS202; + function ICMS203 : iICMS203; + function IPI50: iIPI50; + function &End : iCalculo; end; implementation @@ -37,7 +47,12 @@ implementation DelphiFiscal.Impostos.CST.ICMS20, DelphiFiscal.Impostos.CST.ICMS30, DelphiFiscal.Impostos.CST.ICMS51, - DelphiFiscal.Impostos.CST.ICMS70; + DelphiFiscal.Impostos.CST.ICMS70, + DelphiFiscal.Impostos.CST.ICMS101, + DelphiFiscal.Impostos.CST.ICMS201, + DelphiFiscal.Impostos.CST.ICMS202, + DelphiFiscal.Impostos.CST.ICMS203, + DelphiFiscal.Impostos.CST.IPI50; { TDelphiFiscalCST } @@ -62,6 +77,14 @@ function TDelphiFiscalCST.ICMS10: iICMS10; Result:= FICMS10; end; +function TDelphiFiscalCST.ICMS101: iICMS101; +begin + if not Assigned(FICMS101) then + FICMS101:= TICMS101.New(self); + + Result:= FICMS101; +end; + function TDelphiFiscalCST.ICMS20: iICMS20; begin if not Assigned(FICMS20) then @@ -70,6 +93,30 @@ function TDelphiFiscalCST.ICMS20: iICMS20; Result:= FICMS20; end; +function TDelphiFiscalCST.ICMS201: iICMS201; +begin + if not Assigned(FICMS201) then + FICMS201:= TICMS201.New(self); + + Result:= FICMS201; +end; + +function TDelphiFiscalCST.ICMS202: iICMS202; +begin + if not Assigned(FICMS202) then + FICMS202:= TICMS202.New(self); + + Result:= FICMS202; +end; + +function TDelphiFiscalCST.ICMS203: iICMS203; +begin + if not Assigned(FICMS203) then + FICMS203:= TICMS203.New(self); + + Result:= FICMS203; +end; + function TDelphiFiscalCST.ICMS30: iICMS30; begin if not Assigned(FICMS30) then @@ -94,6 +141,14 @@ function TDelphiFiscalCST.ICMS70: iICMS70; Result:= FICMS70; end; +function TDelphiFiscalCST.IPI50: iIPI50; +begin + if not Assigned(FIPI50) then + FIPI50:= TIPI50.New(self); + + Result:= FIPI50; +end; + constructor TDelphiFiscalCST.create(Parent : iCalculo); begin FParent:= Parent; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas new file mode 100644 index 0000000..d372ea6 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas @@ -0,0 +1,59 @@ +unit DelphiFiscal.Impostos.CST.ICMS101; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS101 = class(TInterfacedObject, iICMS101) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS101; + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS101 } + +uses Delphiscal.Utils; + +function TICMS101.BaseCreditoSN: Double; +begin + Result := RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); +end; + +constructor TICMS101.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS101.Destroy; +begin + + inherited; +end; + +function TICMS101.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS101.New(Parent: iCST): iICMS101; +begin + Result:= Self.Create(Parent); +end; + +function TICMS101.ValorCreditoSN: Double; +begin + Result := RoundABNT(BaseCreditoSN * (FParent.&End.ICMS.PercentualCreditoICMSSN / 100), 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas new file mode 100644 index 0000000..4b73d17 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas @@ -0,0 +1,86 @@ +unit DelphiFiscal.Impostos.CST.ICMS201; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS201 = class(TInterfacedObject, iICMS201) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS201; + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS201 } + +uses Delphiscal.Utils; + +function TICMS201.BaseCreditoSN: Double; +begin + Result := RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); +end; + +constructor TICMS201.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS201.Destroy; +begin + + inherited; +end; + +function TICMS201.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS201.New(Parent: iCST): iICMS201; +begin + Result:= Self.Create(Parent); +end; + +function TICMS201.ValorBaseIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); +end; + +function TICMS201.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); +end; + +function TICMS201.ValorCreditoSN: Double; +begin + Result := RoundABNT(BaseCreditoSN * (FParent.&End.ICMS.PercentualCreditoICMSSN / 100), 2); +end; + +function TICMS201.ValorIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); +end; + +function TICMS201.ValorIcmsST: Double; +var + lValor : double; +begin + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + result:= RoundABNT(lValor - ValorIcmsProprio, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas new file mode 100644 index 0000000..add7c48 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas @@ -0,0 +1,74 @@ +unit DelphiFiscal.Impostos.CST.ICMS202; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS202 = class(TInterfacedObject, iICMS202) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS202; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS202 } + +uses Delphiscal.Utils; + +constructor TICMS202.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS202.Destroy; +begin + + inherited; +end; + +function TICMS202.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS202.New(Parent: iCST): iICMS202; +begin + Result:= Self.Create(Parent); +end; + +function TICMS202.ValorBaseIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); +end; + +function TICMS202.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); +end; + +function TICMS202.ValorIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); +end; + +function TICMS202.ValorIcmsST: Double; +var + lValor : double; +begin + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + result:= RoundABNT(lValor - ValorIcmsProprio, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas new file mode 100644 index 0000000..898a589 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas @@ -0,0 +1,74 @@ +unit DelphiFiscal.Impostos.CST.ICMS203; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TICMS203 = class(TInterfacedObject, iICMS203) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iICMS203; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + +implementation + +{ TICMS203 } + +uses Delphiscal.Utils; + +constructor TICMS203.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TICMS203.Destroy; +begin + + inherited; +end; + +function TICMS203.&End: iCST; +begin + Result:= FParent; +end; + +class function TICMS203.New(Parent: iCST): iICMS203; +begin + Result:= Self.Create(Parent); +end; + +function TICMS203.ValorBaseIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); +end; + +function TICMS203.ValorBaseIcmsST: Double; +begin + Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); +end; + +function TICMS203.ValorIcmsProprio: Double; +begin + Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); +end; + +function TICMS203.ValorIcmsST: Double; +var + lValor : double; +begin + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + result:= RoundABNT(lValor - ValorIcmsProprio, 2); +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas new file mode 100644 index 0000000..9943f9f --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas @@ -0,0 +1,66 @@ +unit DelphiFiscal.Impostos.CST.IPI50; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TIPI50 = class(TInterfacedObject, iIPI50) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iIPI50; + function BaseIpi: Double; + function ValorIpi: Double; + function ValorIpiEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TIPI50 } + +uses Delphiscal.Utils; + +function TIPI50.BaseIpi: Double; +begin + result:= RoundABNT((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias), 2); +end; + +constructor TIPI50.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TIPI50.Destroy; +begin + + inherited; +end; + +function TIPI50.&End: iCST; +begin + Result:= FParent; +end; + +class function TIPI50.New(Parent: iCST): iIPI50; +begin + Result:= Self.Create(Parent); +end; + + +function TIPI50.ValorIpi: Double; +begin + Result := RoundABNT(BaseIpi * (FParent.&End.IPI.AliquotaIPI / 100), 2); +end; + +function TIPI50.ValorIpiEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.IPI.QtdeIPITributada * FParent.&End.IPI.ValorIPIPorUnidade), 2); +end; + +end. diff --git a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas index b3341ff..62a436e 100644 --- a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas +++ b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas @@ -6,17 +6,43 @@ interface iST = interface; iICMS = interface; iCST = interface; + iIPI = interface; iICMS00 = interface; iICMS10 = interface; iICMS20 = interface; iICMS51 = interface; iICMS30 = interface; iICMS70 = interface; + iICMS101 = interface; + iICMS201 = interface; + iICMS202 = interface; + iICMS203 = interface; + iIPI50 = interface; iCalculo = interface ['{15AE0E74-C00A-41BC-8D42-ED45CE6D957B}'] + function ValorProduto(aValue : double) : iCalculo; overload; + function ValorProduto : double; overload; + function ValorFrete(aValue : double) : iCalculo; overload; + function ValorFrete : double; overload; + function ValorSeguro(aValue : double) : iCalculo; overload; + function ValorSeguro : double; overload; + function ValorDespesasAcessorias(aValue : double) : iCalculo; overload; + function ValorDespesasAcessorias : double; overload; function ST : iST; function ICMS : iICMS; + function IPI : iIPI; + end; + + iIPI = interface + ['{CDDA0893-A68C-47D7-B843-07645B56D36D}'] + function AliquotaIPI(aValue : double) : iIPI; overload; + function AliquotaIPI : double; overload; + function ValorIPIPorUnidade(aValue : double) : iIPI; overload; + function ValorIPIPorUnidade : double; overload; + function QtdeIPITributada(aValue : double) : iIPI; overload; + function QtdeIPITributada : double; overload; + function &End : iCalculo; end; iST = interface @@ -35,10 +61,6 @@ interface iICMS = interface ['{3995FD99-145B-4F99-8E95-2172ED50248A}'] function CST : iCST; - function ValorProduto(aValue : double) : iICMS; - function ValorFrete(aValue : double) : iICMS; - function ValorSeguro(aValue : double) : iICMS; - function ValorDespesasAcessorias(aValue : double) : iICMS; function ValorIPI(aValue : double) : iICMS; overload; function ValorIPI : double; overload; function ValorDescontos(aValue : double) : iICMS; @@ -47,6 +69,8 @@ interface function PercentualDiferimento : double; overload; function AliquotaICMS(aValue : double) : iICMS; overload; function AliquotaICMS : Double; overload; + function PercentualCreditoICMSSN(aValue : double) : iICMS; overload; + function PercentualCreditoICMSSN : double; overload; function ContemReducao(aValue : boolean) : iICMS; overload; function ContemReducao : boolean; overload; function BaseICMSProprio : double; @@ -65,6 +89,11 @@ interface function ICMS30 : iICMS30; function ICMS51 : iICMS51; function ICMS70 : iICMS70; + function ICMS101 : iICMS101; + function ICMS201 : iICMS201; + function ICMS202 : iICMS202; + function ICMS203 : iICMS203; + function IPI50 : iIPI50; function &End : iCalculo; end; @@ -124,6 +153,49 @@ interface Function &End : iCST; end; + iICMS101 = interface + ['{E94DE381-C6C3-4387-AAE8-F0B48B40CB46}'] + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + Function &End : iCST; + end; + + iICMS201 = interface + ['{BAD353D6-EF40-489D-B9C0-D95F3C4B701B}'] + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + + iICMS202 = interface + ['{C54D7F22-F573-4E6E-A80F-71344F49FC29}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + + iICMS203 = interface + ['{1D0F2F00-E93D-40CF-A0B9-E45744E65486}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + Function &End : iCST; + end; + + iIPI50 = interface + ['{24BB6486-20AB-4AE1-B932-C753CEF023FB}'] + function BaseIpi: Double; + function ValorIpi: Double; + function ValorIpiEspecifico: Double; + end; + implementation end. diff --git a/src/Calculos/DelphiFiscal.Calculos.pas b/src/Calculos/DelphiFiscal.Calculos.pas index ecb3ebc..25cd028 100644 --- a/src/Calculos/DelphiFiscal.Calculos.pas +++ b/src/Calculos/DelphiFiscal.Calculos.pas @@ -8,13 +8,27 @@ interface type TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) private + FValorProduto : double; + FValorFrete : double; + FValorSeguro : double; + FValorDespesasAcessorias : double; FICSM : iICMS; FST : iST; + FIPI : iIPI; public constructor create; destructor destroy; override; class function New : iCalculo; + function ValorProduto(aValue : double) : iCalculo; overload; + function ValorProduto : double; overload; + function ValorFrete(aValue : double) : iCalculo; overload; + function ValorFrete : double; overload; + function ValorSeguro(aValue : double) : iCalculo; overload; + function ValorSeguro : double; overload; + function ValorDespesasAcessorias(aValue : double) : iCalculo; overload; + function ValorDespesasAcessorias : double; overload; function ST : iST; + function IPI : iIPI; function ICMS : iICMS; end; @@ -22,7 +36,8 @@ implementation uses DelphiFiscal.Calculos.ICMS, - DelphiFiscal.Calculos.ST; + DelphiFiscal.Calculos.ST, + DelphiFiscal.Calculos.IPI; { TDelphiFiscalCalculos } @@ -45,6 +60,14 @@ function TDelphiFiscalCalculos.ICMS: iICMS; Result:= FICSM; end; +function TDelphiFiscalCalculos.IPI: iIPI; +begin + if not Assigned(FIPI) then + FIPI:= TDelphiFiscalIPI.New(self); + + Result:= FIPI; +end; + class function TDelphiFiscalCalculos.New: iCalculo; begin Result:= Self.create @@ -58,4 +81,49 @@ function TDelphiFiscalCalculos.ST: iST; Result:= FST; end; +function TDelphiFiscalCalculos.ValorDespesasAcessorias: double; +begin + Result:= FValorDespesasAcessorias; +end; + +function TDelphiFiscalCalculos.ValorDespesasAcessorias( + aValue: double): iCalculo; +begin + Result:= Self; + FValorDespesasAcessorias:= aValue; +end; + +function TDelphiFiscalCalculos.ValorFrete(aValue: double): iCalculo; +begin + Result:= Self; + FValorFrete:= aValue; +end; + +function TDelphiFiscalCalculos.ValorFrete: double; +begin + Result:= FValorFrete; +end; + +function TDelphiFiscalCalculos.ValorProduto: double; +begin + Result:= FValorProduto; +end; + +function TDelphiFiscalCalculos.ValorProduto(aValue: double): iCalculo; +begin + Result:= Self; + FValorProduto:= aValue; +end; + +function TDelphiFiscalCalculos.ValorSeguro(aValue: double): iCalculo; +begin + Result:= Self; + FValorSeguro:= aValue; +end; + +function TDelphiFiscalCalculos.ValorSeguro: double; +begin + Result:= FValorSeguro; +end; + end. diff --git a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas index 81ea493..4db73b1 100644 --- a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas +++ b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas @@ -12,10 +12,6 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) FParent : iCalculo; FCST : iCST; - FValorProduto: Double; - FValorfrete: Double; - FValorSeguro: Double; - FDespesasAcessorias: Double; FValorIpi: Double; FValorDesconto: Double; FPercentualReducao: Double; @@ -27,6 +23,8 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) FAliquotaICMSST : double; FPercentualReducaoBaseICMSST : double; FPercentualMVA : double; + + FPercentualCreditoICMSSN : double; public constructor create(Parent : iCalculo); destructor destroy; override; @@ -34,10 +32,6 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) function &End : iCalculo; function CST : iCST; - function ValorProduto(aValue : double) : iICMS; - function ValorFrete(aValue : double) : iICMS; - function ValorSeguro(aValue : double) : iICMS; - function ValorDespesasAcessorias(aValue : double) : iICMS; function ValorIPI(aValue : double) : iICMS; overload; function ValorIPI : double; overload; function ValorDescontos(aValue : double) : iICMS; @@ -46,6 +40,8 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) function PercentualDiferimento : double; overload; function AliquotaICMS(aValue : double) : iICMS; overload; function AliquotaICMS : Double; overload; + function PercentualCreditoICMSSN(aValue : double) : iICMS; overload; + function PercentualCreditoICMSSN : double; overload; function BaseICMSProprio : double; function BaseICMSNormal : double; function BaseICMSReduzido : double; @@ -101,9 +97,20 @@ function TDelphiFiscalICMS.AliquotaICMS: Double; Result:= FAliquotaICMS; end; +function TDelphiFiscalICMS.PercentualCreditoICMSSN: double; +begin + Result:= FPercentualCreditoICMSSN; +end; + +function TDelphiFiscalICMS.PercentualCreditoICMSSN(aValue: double): iICMS; +begin + Result:= Self; + FPercentualCreditoICMSSN:= aValue; +end; + function TDelphiFiscalICMS.BaseICMSNormal : double; begin - Result:= RoundABNT(FValorProduto + FValorfrete + FValorSeguro + FDespesasAcessorias + FValorIpi - FValorDesconto, 2); + Result:= RoundABNT(FParent.ValorProduto + FParent.Valorfrete + FParent.ValorSeguro + FParent.ValorDespesasAcessorias + FValorIpi - FValorDesconto, 2); end; function TDelphiFiscalICMS.BaseICMSProprio : double; @@ -139,19 +146,6 @@ function TDelphiFiscalICMS.ValorDescontos(aValue: double): iICMS; FValorDesconto:= aValue; end; -function TDelphiFiscalICMS.ValorDespesasAcessorias( - aValue: double): iICMS; -begin - Result:= self; - FDespesasAcessorias:= aValue; -end; - -function TDelphiFiscalICMS.ValorFrete(aValue: double): iICMS; -begin - Result:= self; - FValorfrete:= aValue; -end; - function TDelphiFiscalICMS.ValorICMS: Double; begin Result:= RoundABNT((BaseICMSNormal * (AliquotaIcms / 100)), 2); @@ -190,17 +184,17 @@ function TDelphiFiscalICMS.PercentualReducao(aValue: double): iICMS; FPercentualReducao:= aValue; end; -function TDelphiFiscalICMS.ValorProduto(aValue: double): iICMS; -begin - Result:= self; - FValorProduto:= aValue; -end; - -function TDelphiFiscalICMS.ValorSeguro(aValue: double): iICMS; -begin - Result:= self; - FValorSeguro:= aValue; -end; +//function TDelphiFiscalICMS.ValorProduto(aValue: double): iICMS; +//begin +// Result:= self; +// FValorProduto:= aValue; +//end; +// +//function TDelphiFiscalICMS.ValorSeguro(aValue: double): iICMS; +//begin +// Result:= self; +// FValorSeguro:= aValue; +//end; end. diff --git a/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas new file mode 100644 index 0000000..4d491d0 --- /dev/null +++ b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas @@ -0,0 +1,88 @@ +unit DelphiFiscal.Calculos.IPI; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalIPI = class(TInterfacedObject, iIPI) + private + [weak] + FParent : iCalculo; + FAliquotaIPI : double; + FValorIPIPorUnidade : double; + FQtdeIPITributada : double; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iIPI; + function AliquotaIPI(aValue : double) : iIPI; overload; + function AliquotaIPI : double; overload; + function ValorIPIPorUnidade(aValue : double) : iIPI; overload; + function ValorIPIPorUnidade : double; overload; + function QtdeIPITributada(aValue : double) : iIPI; overload; + function QtdeIPITributada : double; overload; + function &End : iCalculo; + end; +implementation + +{ TDelphiFiscalIPI } + +uses Delphiscal.Utils; + +function TDelphiFiscalIPI.&End: iCalculo; +begin + Result:= FParent; +end; + +function TDelphiFiscalIPI.AliquotaIPI(aValue: double): iIPI; +begin + Result:= Self; + FAliquotaIPI:= aValue; +end; + +function TDelphiFiscalIPI.AliquotaIPI: double; +begin + Result:= FAliquotaIPI; +end; + +constructor TDelphiFiscalIPI.create(Parent: iCalculo); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalIPI.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalIPI.New(Parent: iCalculo): iIPI; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalIPI.QtdeIPITributada: double; +begin + Result:= FQtdeIPITributada; +end; + +function TDelphiFiscalIPI.QtdeIPITributada(aValue: double): iIPI; +begin + Result:= Self; + FQtdeIPITributada:= aValue; +end; + +function TDelphiFiscalIPI.ValorIPIPorUnidade(aValue: double): iIPI; +begin + Result:= Self; + FValorIPIPorUnidade:= aValue; +end; + +function TDelphiFiscalIPI.ValorIPIPorUnidade: double; +begin + Result:= FValorIPIPorUnidade; +end; + +end. From bfb7e081de14aac8b303b9c934b0f1e47f8f694a Mon Sep 17 00:00:00 2001 From: Paulo Date: Tue, 14 Feb 2023 16:35:21 -0300 Subject: [PATCH 3/5] =?UTF-8?q?Refatora=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- samples/delphi/Delphiscal.dpr | 31 +- samples/delphi/Delphiscal.dproj | 29 +- samples/delphi/src/Samples.Delphi.Main.dfm | 17 +- samples/delphi/src/Samples.Delphi.Main.pas | 318 ++---------------- .../COFINS/DelphiFiscal.Calculos.COFINS.pas | 88 +++++ src/Calculos/CST/DelphiFiscal.CST.pas | 68 +++- .../DelphiFiscal.Impostos.CST.COFINS01.pas | 66 ++++ .../DelphiFiscal.Impostos.CST.COFINS02.pas | 66 ++++ .../DelphiFiscal.Impostos.CST.COFINS03.pas | 67 ++++ .../CST/DelphiFiscal.Impostos.CST.PIS01.pas | 66 ++++ .../CST/DelphiFiscal.Impostos.CST.PIS02.pas | 67 ++++ .../CST/DelphiFiscal.Impostos.CST.PIS03.pas | 67 ++++ .../DelphiFiscal.Calculos.Interfaces.pas | 86 ++++- src/Calculos/DelphiFiscal.Calculos.pas | 37 +- .../ICMS/DelphiFiscal.Calculos.ICMS.pas | 10 +- .../PIS/DelphiFiscal.Calculos.PIS.pas | 88 +++++ src/{ => Calculos/Util}/Delphiscal.Utils.pas | 0 src/Delphiscal.Cofins.Base.pas | 38 --- src/Delphiscal.Cofins01_02.Intf.pas | 14 - src/Delphiscal.Cofins01_02.pas | 55 --- src/Delphiscal.Cofins03.Intf.pas | 15 - src/Delphiscal.Cofins03.pas | 58 ---- src/Delphiscal.Icms.BaseProprio.pas | 66 ---- src/Delphiscal.Icms.BaseST.pas | 62 ---- src/Delphiscal.Icms.Valor.ST.pas | 49 --- src/Delphiscal.Icms.Valor.pas | 48 --- src/Delphiscal.Icms00.Intf.pas | 14 - src/Delphiscal.Icms00.pas | 53 --- src/Delphiscal.Icms10.Intf.pas | 17 - src/Delphiscal.Icms10.pas | 84 ----- src/Delphiscal.Icms101.Intf.pas | 14 - src/Delphiscal.Icms101.pas | 57 ---- src/Delphiscal.Icms20.Intf.pas | 15 - src/Delphiscal.Icms20.pas | 67 ---- src/Delphiscal.Icms201.Intf.pas | 17 - src/Delphiscal.Icms201.pas | 85 ----- src/Delphiscal.Icms202_203.Intf.pas | 16 - src/Delphiscal.Icms202_203.pas | 77 ----- src/Delphiscal.Icms30.Intf.pas | 17 - src/Delphiscal.Icms30.pas | 81 ----- src/Delphiscal.Icms51.Intf.pas | 16 - src/Delphiscal.Icms51.pas | 72 ---- src/Delphiscal.Icms70.Intf.pas | 18 - src/Delphiscal.Icms70.pas | 92 ----- src/Delphiscal.Ipi.Base.pas | 34 -- src/Delphiscal.Ipi50AdValorem.Intf.pas | 14 - src/Delphiscal.Ipi50AdValorem.pas | 51 --- src/Delphiscal.Ipi50Especifico.Intf.pas | 15 - src/Delphiscal.Ipi50Especifico.pas | 58 ---- src/Delphiscal.Pis.Base.pas | 38 --- src/Delphiscal.Pis01_02.Intf.pas | 14 - src/Delphiscal.Pis01_02.pas | 53 --- src/Delphiscal.Pis03.Intf.pas | 15 - src/Delphiscal.Pis03.pas | 58 ---- 54 files changed, 810 insertions(+), 1928 deletions(-) create mode 100644 src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas create mode 100644 src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas create mode 100644 src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas rename src/{ => Calculos/Util}/Delphiscal.Utils.pas (100%) delete mode 100644 src/Delphiscal.Cofins.Base.pas delete mode 100644 src/Delphiscal.Cofins01_02.Intf.pas delete mode 100644 src/Delphiscal.Cofins01_02.pas delete mode 100644 src/Delphiscal.Cofins03.Intf.pas delete mode 100644 src/Delphiscal.Cofins03.pas delete mode 100644 src/Delphiscal.Icms.BaseProprio.pas delete mode 100644 src/Delphiscal.Icms.BaseST.pas delete mode 100644 src/Delphiscal.Icms.Valor.ST.pas delete mode 100644 src/Delphiscal.Icms.Valor.pas delete mode 100644 src/Delphiscal.Icms00.Intf.pas delete mode 100644 src/Delphiscal.Icms00.pas delete mode 100644 src/Delphiscal.Icms10.Intf.pas delete mode 100644 src/Delphiscal.Icms10.pas delete mode 100644 src/Delphiscal.Icms101.Intf.pas delete mode 100644 src/Delphiscal.Icms101.pas delete mode 100644 src/Delphiscal.Icms20.Intf.pas delete mode 100644 src/Delphiscal.Icms20.pas delete mode 100644 src/Delphiscal.Icms201.Intf.pas delete mode 100644 src/Delphiscal.Icms201.pas delete mode 100644 src/Delphiscal.Icms202_203.Intf.pas delete mode 100644 src/Delphiscal.Icms202_203.pas delete mode 100644 src/Delphiscal.Icms30.Intf.pas delete mode 100644 src/Delphiscal.Icms30.pas delete mode 100644 src/Delphiscal.Icms51.Intf.pas delete mode 100644 src/Delphiscal.Icms51.pas delete mode 100644 src/Delphiscal.Icms70.Intf.pas delete mode 100644 src/Delphiscal.Icms70.pas delete mode 100644 src/Delphiscal.Ipi.Base.pas delete mode 100644 src/Delphiscal.Ipi50AdValorem.Intf.pas delete mode 100644 src/Delphiscal.Ipi50AdValorem.pas delete mode 100644 src/Delphiscal.Ipi50Especifico.Intf.pas delete mode 100644 src/Delphiscal.Ipi50Especifico.pas delete mode 100644 src/Delphiscal.Pis.Base.pas delete mode 100644 src/Delphiscal.Pis01_02.Intf.pas delete mode 100644 src/Delphiscal.Pis01_02.pas delete mode 100644 src/Delphiscal.Pis03.Intf.pas delete mode 100644 src/Delphiscal.Pis03.pas diff --git a/samples/delphi/Delphiscal.dpr b/samples/delphi/Delphiscal.dpr index 9e017c6..7bae744 100644 --- a/samples/delphi/Delphiscal.dpr +++ b/samples/delphi/Delphiscal.dpr @@ -2,26 +2,7 @@ program Delphiscal; uses Vcl.Forms, Samples.Delphi.Main in 'src\Samples.Delphi.Main.pas' {FrmMain}, - Delphiscal.Cofins.Base in '..\..\src\Delphiscal.Cofins.Base.pas', - Delphiscal.Cofins01_02.Intf in '..\..\src\Delphiscal.Cofins01_02.Intf.pas', - Delphiscal.Cofins01_02 in '..\..\src\Delphiscal.Cofins01_02.pas', - Delphiscal.Cofins03.Intf in '..\..\src\Delphiscal.Cofins03.Intf.pas', - Delphiscal.Cofins03 in '..\..\src\Delphiscal.Cofins03.pas', - Delphiscal.Icms.BaseProprio in '..\..\src\Delphiscal.Icms.BaseProprio.pas', - Delphiscal.Icms.BaseST in '..\..\src\Delphiscal.Icms.BaseST.pas', - Delphiscal.Icms.Valor in '..\..\src\Delphiscal.Icms.Valor.pas', - Delphiscal.Icms.Valor.ST in '..\..\src\Delphiscal.Icms.Valor.ST.pas', - Delphiscal.Ipi.Base in '..\..\src\Delphiscal.Ipi.Base.pas', - Delphiscal.Ipi50AdValorem.Intf in '..\..\src\Delphiscal.Ipi50AdValorem.Intf.pas', - Delphiscal.Ipi50AdValorem in '..\..\src\Delphiscal.Ipi50AdValorem.pas', - Delphiscal.Ipi50Especifico.Intf in '..\..\src\Delphiscal.Ipi50Especifico.Intf.pas', - Delphiscal.Ipi50Especifico in '..\..\src\Delphiscal.Ipi50Especifico.pas', - Delphiscal.Pis.Base in '..\..\src\Delphiscal.Pis.Base.pas', - Delphiscal.Pis01_02.Intf in '..\..\src\Delphiscal.Pis01_02.Intf.pas', - Delphiscal.Pis01_02 in '..\..\src\Delphiscal.Pis01_02.pas', - Delphiscal.Pis03.Intf in '..\..\src\Delphiscal.Pis03.Intf.pas', - Delphiscal.Pis03 in '..\..\src\Delphiscal.Pis03.pas', - Delphiscal.Utils in '..\..\src\Delphiscal.Utils.pas', + Delphiscal.Utils in '..\..\src\Calculos\Util\Delphiscal.Utils.pas', DelphiFiscal.Impostos.CST.ICMS00 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS00.pas', DelphiFiscal.Impostos.CST.ICMS20 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS20.pas', DelphiFiscal.Impostos.CST.ICMS51 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS51.pas', @@ -38,7 +19,15 @@ uses DelphiFiscal.Impostos.CST.ICMS202 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS202.pas', DelphiFiscal.Impostos.CST.ICMS203 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS203.pas', DelphiFiscal.Calculos.IPI in '..\..\src\Calculos\IPI\DelphiFiscal.Calculos.IPI.pas', - DelphiFiscal.Impostos.CST.IPI50 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.IPI50.pas'; + DelphiFiscal.Impostos.CST.IPI50 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.IPI50.pas', + DelphiFiscal.Calculos.PIS in '..\..\src\Calculos\PIS\DelphiFiscal.Calculos.PIS.pas', + DelphiFiscal.Impostos.CST.PIS01 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.PIS01.pas', + DelphiFiscal.Impostos.CST.PIS02 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.PIS02.pas', + DelphiFiscal.Impostos.CST.PIS03 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.PIS03.pas', + DelphiFiscal.Impostos.CST.COFINS01 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS01.pas', + DelphiFiscal.Calculos.COFINS in '..\..\src\Calculos\COFINS\DelphiFiscal.Calculos.COFINS.pas', + DelphiFiscal.Impostos.CST.COFINS02 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS02.pas', + DelphiFiscal.Impostos.CST.COFINS03 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS03.pas'; {$R *.res} begin diff --git a/samples/delphi/Delphiscal.dproj b/samples/delphi/Delphiscal.dproj index 68259f6..b1462c2 100644 --- a/samples/delphi/Delphiscal.dproj +++ b/samples/delphi/Delphiscal.dproj @@ -111,26 +111,7 @@
FrmMain
dfm
- - - - - - - - - - - - - - - - - - - - + @@ -148,6 +129,14 @@ + + + + + + + + Base diff --git a/samples/delphi/src/Samples.Delphi.Main.dfm b/samples/delphi/src/Samples.Delphi.Main.dfm index ff6a83c..7c70acd 100644 --- a/samples/delphi/src/Samples.Delphi.Main.dfm +++ b/samples/delphi/src/Samples.Delphi.Main.dfm @@ -6666,7 +6666,7 @@ object FrmMain: TFrmMain Top = 153 Width = 1037 Height = 433 - ActivePage = TabSheet5 + ActivePage = TabSheet7 Align = alClient TabOrder = 1 object TabSheet1: TTabSheet @@ -6941,7 +6941,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 00' TabOrder = 8 - OnClick = btIcms00Click end object btIcms20: TButton Left = 503 @@ -6950,7 +6949,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 20' TabOrder = 9 - OnClick = btIcms20Click end object btIcms51: TButton Left = 750 @@ -6959,7 +6957,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 51' TabOrder = 10 - OnClick = btIcms51Click end object edAliqIcms: TEdit Left = 145 @@ -7125,7 +7122,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 70' TabOrder = 1 - OnClick = btIcms70Click end object GroupBox5: TGroupBox Left = 511 @@ -7184,7 +7180,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 30' TabOrder = 3 - OnClick = btIcms30Click end object GroupBox6: TGroupBox Left = 264 @@ -7271,7 +7266,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 10' TabOrder = 5 - OnClick = btIcms10Click end object edAliqST: TEdit Left = 145 @@ -7367,7 +7361,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular CSOSN 101' TabOrder = 2 - OnClick = btIcms101Click end object GroupBox8: TGroupBox Left = 455 @@ -7440,7 +7433,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 201' TabOrder = 4 - OnClick = btIcms201Click end object GroupBox9: TGroupBox Left = 711 @@ -7485,7 +7477,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular ICMS 202 e 203' TabOrder = 6 - OnClick = btIcms202_203Click end end object TabSheet5: TTabSheet @@ -7587,7 +7578,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular IPI 50 AdValorem' TabOrder = 3 - OnClick = btIpi50AdValoremClick end object btIpi50AliqEspecifica: TButton Left = 451 @@ -7596,7 +7586,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular IPI 50 Aliq. Espec'#237'fica' TabOrder = 4 - OnClick = btIpi50AliqEspecificaClick end object edValorIpiUn: TEdit Left = 141 @@ -7738,7 +7727,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular PIS 01 ou 02' TabOrder = 5 - OnClick = btPis0102Click end object btPis03: TButton Left = 459 @@ -7747,7 +7735,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular PIS 03' TabOrder = 6 - OnClick = btPis03Click end end object TabSheet7: TTabSheet @@ -7869,7 +7856,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular COFINS 01 ou 02' TabOrder = 5 - OnClick = btCofins0102Click end object btCofins03: TButton Left = 467 @@ -7878,7 +7864,6 @@ object FrmMain: TFrmMain Height = 39 Caption = 'Calcular COFINS 03' TabOrder = 6 - OnClick = btCofins03Click end end end diff --git a/samples/delphi/src/Samples.Delphi.Main.pas b/samples/delphi/src/Samples.Delphi.Main.pas index 09c2551..37d5ac8 100644 --- a/samples/delphi/src/Samples.Delphi.Main.pas +++ b/samples/delphi/src/Samples.Delphi.Main.pas @@ -181,21 +181,6 @@ TFrmMain = class(TForm) btCofins0102: TButton; btCofins03: TButton; Button1: TButton; - procedure btIcms00Click(Sender: TObject); - procedure btIcms20Click(Sender: TObject); - procedure btIcms51Click(Sender: TObject); - procedure btIcms10Click(Sender: TObject); - procedure btIcms30Click(Sender: TObject); - procedure btIcms70Click(Sender: TObject); - procedure btIcms101Click(Sender: TObject); - procedure btIcms201Click(Sender: TObject); - procedure btIcms202_203Click(Sender: TObject); - procedure btIpi50AdValoremClick(Sender: TObject); - procedure btIpi50AliqEspecificaClick(Sender: TObject); - procedure btPis0102Click(Sender: TObject); - procedure btCofins0102Click(Sender: TObject); - procedure btPis03Click(Sender: TObject); - procedure btCofins03Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private @@ -204,207 +189,12 @@ TFrmMain = class(TForm) var FrmMain: TFrmMain; implementation + uses - Delphiscal.Icms00, - Delphiscal.Icms00.Intf, - Delphiscal.Icms20, - Delphiscal.Icms20.Intf, - Delphiscal.Icms51, - Delphiscal.Icms51.Intf, - Delphiscal.Icms10.Intf, - Delphiscal.Icms10, - Delphiscal.Icms30.Intf, - Delphiscal.Icms30, - Delphiscal.Icms70, - Delphiscal.Icms70.Intf, - Delphiscal.Icms101.Intf, - Delphiscal.Icms101, - Delphiscal.Icms201, - Delphiscal.Icms201.Intf, - Delphiscal.Icms202_203, - Delphiscal.Icms202_203.Intf, - Delphiscal.Ipi50AdValorem, - Delphiscal.Ipi50AdValorem.Intf, - Delphiscal.Ipi50Especifico.Intf, - Delphiscal.Ipi50Especifico, - Delphiscal.Pis01_02.Intf, - Delphiscal.Pis01_02, - Delphiscal.Pis03.Intf, - Delphiscal.Pis03, - Delphiscal.Cofins01_02.Intf, - Delphiscal.Cofins01_02, - Delphiscal.Cofins03.Intf, - Delphiscal.Cofins03, System.SysUtils, DelphiFiscal.Calculos; + System.SysUtils, + DelphiFiscal.Calculos; + {$R *.dfm} -procedure TFrmMain.btCofins0102Click(Sender: TObject); -var - LCofins01_02: ICofins01_02; -begin - LCofins01_02 := {} - TCofins01_02.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqCofins.Text, 0)); - lbVBCCOFINS01_02.Caption := LCofins01_02.BaseCofins.ToString; - lbVCOFINS01_02.Caption := LCofins01_02.ValorCofins.ToString; -end; -procedure TFrmMain.btCofins03Click(Sender: TObject); -begin - lbVCOFINS03.Caption := TCofins03.New - .QuantidadeTributada(StrToFloatDef(edQtdeCofinsUn.Text, 0)) - .ValorPorUnidadeTributada(StrToFloatDef(edValorCofinsUn.Text, 0)) - .ValorCofins.ToString; -end; -procedure TFrmMain.btIcms00Click(Sender: TObject); -var - LIcms00: IIcms00; -begin - LIcms00 := TIcms00.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBC00.Caption := LIcms00.BaseIcmsProprio.ToString; - lbVICMS00.Caption := LIcms00.ValorIcmsProprio.ToString; -end; -procedure TFrmMain.btIcms10Click(Sender: TObject); -var - LIcms10: IIcms10; -begin - LIcms10 := TIcms10.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edPercRedST.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBC10.Caption := LIcms10.ValorBaseIcmsProprio.ToString; - lbVICMS10.Caption := LIcms10.ValorIcmsProprio.ToString; - lbVBCST10.Caption := LIcms10.ValorBaseIcmsST.ToString; - lbVICMSST10.Caption := LIcms10.ValorIcmsST.ToString; - lbVICMSSTDeson10.Caption := LIcms10.ValorIcmsSTDesonerado.ToString; -end; -procedure TFrmMain.btIcms20Click(Sender: TObject); -var - LIcms20: IIcms20; -begin - LIcms20 := TIcms20.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edReducao.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBC20.Caption := LIcms20.BaseReduzidaIcmsProprio.ToString; - lbVICMS20.Caption := LIcms20.ValorIcmsProprio.ToString; - lbVICMSDESON20.Caption := LIcms20.ValorIcmsDesonerado.ToString; -end; -procedure TFrmMain.btIcms30Click(Sender: TObject); -var - LIcms30: IIcms30; -begin - LIcms30 := TIcms30.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edPercRedST.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBCST30.Caption := LIcms30.ValorBaseIcmsST.ToString; - lbVICMSST30.Caption := LIcms30.ValorIcmsST.ToString; - lbVICMSSTDeson30.Caption := LIcms30.ValorIcmsDesonerado.ToString; -end; -procedure TFrmMain.btIcms70Click(Sender: TObject); -var - LIcms10: IIcms10; - LIcms70: IIcms70; -begin - LIcms70 := TIcms70.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edReducao.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edPercRedST.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBC70.Caption := LIcms70.ValorBaseReduzidaIcmsProprio.ToString; - lbVICMS70.Caption := LIcms70.ValorIcmsProprio.ToString; - lbVICMSDeson70.Caption := LIcms70.ValorIcmsDesonerado.ToString; - lbVBCST70.Caption := LIcms70.ValorBaseIcmsST.ToString; - lbVICMSST70.Caption := LIcms70.ValorIcmsST.ToString; - LIcms10 := TIcms10.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVICMSSTDeson70.Caption := LIcms70.ValorIcmsSTDesonerado(LIcms10.ValorIcmsST).ToString; -end; -procedure TFrmMain.btIpi50AdValoremClick(Sender: TObject); -var - LIpi50Av: IIpi50AdValorem; -begin - LIpi50Av := TIpi50AdValorem.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edAliqIpi.Text, 0)); - lbvBCIpi50av.Caption := LIpi50Av.BaseIpi.ToString; - lbVIPI50av.Caption := LIpi50Av.ValorIpi.ToString; -end; -procedure TFrmMain.btIpi50AliqEspecificaClick(Sender: TObject); -begin - lbVipi50Especifico.Caption := TIpi50Especifico.New - .QuantidadeTributada(StrToFloatDef(edQtdeIpiTributada.Text, 0)) - .ValorPorUnidadeTributada(StrToFloatDef(edValorIpiUn.Text, 0)) - .ValorIpi.ToString; -end; -procedure TFrmMain.btPis0102Click(Sender: TObject); -var - LPis01_02: IPIs01_02; -begin - LPis01_02 := TPis01_02.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqPis.Text, 0)); - lbVBCPIS01_02.Caption := LPis01_02.BasePis.ToString; - lbVPIS01_02.Caption := LPis01_02.ValorPis.ToString; -end; -procedure TFrmMain.btPis03Click(Sender: TObject); -begin - lbVPIS03.Caption := TPis03.New - .QuantidadeTributada(StrToFloatDef(edQtdePisUn.Text, 0)) - .ValorPorUnidadeTributada(StrToFloatDef(edValorPisUn.Text, 0)) - .ValorPis.ToString; -end; procedure TFrmMain.Button1Click(Sender: TObject); begin FImpostos @@ -412,9 +202,9 @@ procedure TFrmMain.Button1Click(Sender: TObject); .ValorFrete(strtofloatdef(edValorFrete.Text,0)) .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) + .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)) .ICMS .ValorIPI(strtofloatdef(edValorIpi.Text,0)) - .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)) .PercentualReducao(strtofloatdef(edReducao.Text,0)) .PercentualDiferimento(strtofloatdef(edDiferimento.Text,0)) .AliquotaICMS(strtofloatdef(edAliqIcms.Text,0)) @@ -427,9 +217,20 @@ procedure TFrmMain.Button1Click(Sender: TObject); .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)) .&End .IPI - .AliquotaIPI(strtofloatdef(edAliqIpi.Text,0)) - .ValorIPIPorUnidade(strtofloatdef(edValorIpiUn.Text,0)) - .QtdeIPITributada(strtofloatdef(edQtdeIpiTributada.Text,0)); + .AliquotaIPI(strtofloatdef(edAliqIpi.Text,0)) + .ValorIPIPorUnidade(strtofloatdef(edValorIpiUn.Text,0)) + .QtdeIPITributada(strtofloatdef(edQtdeIpiTributada.Text,0)) + .&End + .PIS + .AliquotaPIS(strtofloatdef(edAliqPis.Text,0)) + .ValorPISPorUnidade(strtofloatdef(edValorPisUn.Text,0)) + .QtdePISTributada(strtofloatdef(edQtdePisUn.Text,0)) + .&End + .COFINS + .AliquotaCOFINS(strtofloatdef(edAliqCofins.Text,0)) + .ValorCOFINSPorUnidade(strtofloatdef(edValorCofinsUn.Text,0)) + .QtdeCOFINSTributada(strtofloatdef(edQtdeCofinsUn.Text,0)) + .&End; lbVICMS00.Caption:= FImpostos.ICMS.ValorICMS.ToString; lbVBC00.Caption := FImpostos.ICMS.CST.ICMS00.BaseICMSProprio.ToString; @@ -475,6 +276,14 @@ procedure TFrmMain.Button1Click(Sender: TObject); lbvBCIpi50av.Caption:= FImpostos.ICMS.CST.IPI50.BaseIpi.ToString; lbVIPI50av.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpi.ToString; lbVipi50Especifico.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpiEspecifico.ToString; + + lbVBCPIS01_02.Caption:= FImpostos.ICMS.CST.PIS01.BasePis.ToString; + lbVPIS01_02.Caption:= FImpostos.ICMS.CST.PIS01.ValorPis.ToString; + lbVPIS03.Caption:= FImpostos.ICMS.CST.PIS01.ValorPisEspecifico.ToString; + + lbVBCCOFINS01_02.Caption:= FImpostos.ICMS.CST.COFINS01.BaseCofins.ToString; + lbVCOFINS01_02.Caption := FImpostos.ICMS.CST.COFINS01.ValorCofins.ToString; + lbVCOFINS03.Caption:= FImpostos.ICMS.CST.COFINS01.ValorCofinsEspecifico.ToString; end; procedure TFrmMain.FormCreate(Sender: TObject); @@ -482,77 +291,4 @@ procedure TFrmMain.FormCreate(Sender: TObject); FImpostos:= TDelphiFiscalCalculos.New; end; -procedure TFrmMain.btIcms101Click(Sender: TObject); -var - LIcms101: IIcms101; -begin - LIcms101 := TIcms101.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edPercentualCreditoSN.Text, 0), {} - StrToFloatDef(edReducao.Text, 0)); - lbPCredSN101.Caption := edPercentualCreditoSN.Text; - lbVcredSN101.Caption := LIcms101.ValorCreditoSN.ToString; -end; -procedure TFrmMain.btIcms201Click(Sender: TObject); -var - LIcms201: IIcms201; -begin - LIcms201 := TIcms201.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edReducao.Text, 0), {} - StrToFloatDef(edPercentualCreditoSN.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edPercRedST.Text, 0)); - lbPCredSN201.Caption := edPercentualCreditoSN.Text; - lbVCredSN201.Caption := LIcms201.ValorCreditoSN.ToString; - lbVBCST201.Caption := LIcms201.ValorBaseIcmsST.ToString; - lbVICMSST201.Caption := LIcms201.ValorIcmsST.ToString; -end; -procedure TFrmMain.btIcms51Click(Sender: TObject); -var - LIcms51: IIcms51; -begin - LIcms51 := TIcms51.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edDiferimento.Text, 0), {} - StrToFloatDef(edReducao.Text, 0), {} - StrToFloatDef(edValorIpi.Text, 0)); - lbVBC51.Caption := LIcms51.BaseIcmsProprio.ToString; - lbVICMSOP.Caption := LIcms51.ValorIcmsOperacao.ToString; - lbVICMSDIF.Caption := LIcms51.ValorIcmsDiferido.ToString; - lbVICMS51.Caption := LIcms51.ValorIcmsProprio.ToString; -end; -procedure TFrmMain.btIcms202_203Click(Sender: TObject); -var - LIcms202_203: IIcms202_203; -begin - LIcms202_203 := TIcms202_203.Create({} - StrToFloatDef(edValorProduto.Text, 0), {} - StrToFloatDef(edValorFrete.Text, 0), {} - StrToFloatDef(edValorSeguro.Text, 0), {} - StrToFloatDef(edValorDespesas.Text, 0), {} - StrToFloatDef(edValorDesconto.Text, 0), {} - StrToFloatDef(edAliqIcms.Text, 0), {} - StrToFloatDef(edReducao.Text, 0), {} - StrToFloatDef(edAliqST.Text, 0), {} - StrToFloatDef(edMVA.Text, 0), {} - StrToFloatDef(edPercRedST.Text, 0)); - lbVBCST202.Caption := LIcms202_203.ValorBaseIcmsST.ToString; - lbVICMSST202.Caption := LIcms202_203.ValorIcmsST.ToString; -end; end. diff --git a/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas new file mode 100644 index 0000000..0d8c71b --- /dev/null +++ b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas @@ -0,0 +1,88 @@ +unit DelphiFiscal.Calculos.COFINS; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalCOFINS = class(TInterfacedObject, iCOFINS) + private + [weak] + FParent : iCalculo; + FAliquotaCOFIS : double; + FValorIPIPorUnidade : double; + FQtdeIPITributada : double; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iCOFINS; + function AliquotaCOFINS(aValue : double) : iCOFINS; overload; + function AliquotaCOFINS : double; overload; + function ValorCOFINSPorUnidade(aValue : double) : iCOFINS; overload; + function ValorCOFINSPorUnidade : double; overload; + function QtdeCOFINSTributada(aValue : double) : iCOFINS; overload; + function QtdeCOFINSTributada : double; overload; + function &End : iCalculo; + end; +implementation + +{ TDelphiFiscalCOFINS } + +uses Delphiscal.Utils; + +function TDelphiFiscalCOFINS.&End: iCalculo; +begin + Result:= FParent; +end; + +function TDelphiFiscalCOFINS.AliquotaCOFINS(aValue: double): iCOFINS; +begin + Result:= Self; + FAliquotaCOFIS:= aValue; +end; + +function TDelphiFiscalCOFINS.AliquotaCOFINS: double; +begin + Result:= FAliquotaCOFIS; +end; + +constructor TDelphiFiscalCOFINS.create(Parent: iCalculo); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalCOFINS.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalCOFINS.New(Parent: iCalculo): iCOFINS; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalCOFINS.QtdeCOFINSTributada: double; +begin + Result:= FQtdeIPITributada; +end; + +function TDelphiFiscalCOFINS.QtdeCOFINSTributada(aValue: double): iCOFINS; +begin + Result:= Self; + FQtdeIPITributada:= aValue; +end; + +function TDelphiFiscalCOFINS.ValorCOFINSPorUnidade(aValue: double): iCOFINS; +begin + Result:= Self; + FValorIPIPorUnidade:= aValue; +end; + +function TDelphiFiscalCOFINS.ValorCOFINSPorUnidade: double; +begin + Result:= FValorIPIPorUnidade; +end; + +end. diff --git a/src/Calculos/CST/DelphiFiscal.CST.pas b/src/Calculos/CST/DelphiFiscal.CST.pas index c6fef05..4602f40 100644 --- a/src/Calculos/CST/DelphiFiscal.CST.pas +++ b/src/Calculos/CST/DelphiFiscal.CST.pas @@ -21,6 +21,12 @@ TDelphiFiscalCST = class(TInterfacedObject, iCST) FICMS202 : iICMS202; FICMS203 : iICMS203; FIPI50 : iIPI50; + FPIS01 : iPIS01; + FPIS02 : iPIS02; + FPIS03 : iPIS03; + FCOFINS01 : iCOFINS01; + FCOFINS02 : iCOFINS02; + FCOFINS03 : iCOFINS03; public constructor create(Parent : iCalculo); destructor destroy; override; @@ -36,6 +42,12 @@ TDelphiFiscalCST = class(TInterfacedObject, iCST) function ICMS202 : iICMS202; function ICMS203 : iICMS203; function IPI50: iIPI50; + function PIS01: iPIS01; + function PIS02: iPIS02; + function PIS03: iPIS03; + function COFINS01: iCOFINS01; + function COFINS02: iCOFINS02; + function COFINS03: iCOFINS03; function &End : iCalculo; end; @@ -52,7 +64,12 @@ implementation DelphiFiscal.Impostos.CST.ICMS201, DelphiFiscal.Impostos.CST.ICMS202, DelphiFiscal.Impostos.CST.ICMS203, - DelphiFiscal.Impostos.CST.IPI50; + DelphiFiscal.Impostos.CST.IPI50, + DelphiFiscal.Impostos.CST.PIS01, + DelphiFiscal.Impostos.CST.PIS02, + DelphiFiscal.Impostos.CST.PIS03, + DelphiFiscal.Impostos.CST.COFINS01, + DelphiFiscal.Impostos.CST.COFINS02, DelphiFiscal.Impostos.CST.COFINS03; { TDelphiFiscalCST } @@ -141,6 +158,30 @@ function TDelphiFiscalCST.ICMS70: iICMS70; Result:= FICMS70; end; +function TDelphiFiscalCST.PIS01: iPIS01; +begin + if not Assigned(FPIS01) then + FPIS01:= TPIS01.New(self); + + Result:= FPIS01; +end; + +function TDelphiFiscalCST.PIS02: iPIS02; +begin + if not Assigned(FPIS02) then + FPIS02:= TPIS02.New(self); + + Result:= FPIS02; +end; + +function TDelphiFiscalCST.PIS03: iPIS03; +begin + if not Assigned(FPIS03) then + FPIS03:= TPIS03.New(self); + + Result:= FPIS03; +end; + function TDelphiFiscalCST.IPI50: iIPI50; begin if not Assigned(FIPI50) then @@ -149,6 +190,30 @@ function TDelphiFiscalCST.IPI50: iIPI50; Result:= FIPI50; end; +function TDelphiFiscalCST.COFINS02: iCOFINS02; +begin + if not Assigned(FCOFINS02) then + FCOFINS02:= TCOFINS02.New(self); + + Result:= FCOFINS02; +end; + +function TDelphiFiscalCST.COFINS03: iCOFINS03; +begin + if not Assigned(FCOFINS03) then + FCOFINS03:= TCOFINS03.New(self); + + Result:= FCOFINS03; +end; + +function TDelphiFiscalCST.COFINS01: iCOFINS01; +begin + if not Assigned(FCOFINS01) then + FCOFINS01:= TCOFINS01.New(self); + + Result:= FCOFINS01; +end; + constructor TDelphiFiscalCST.create(Parent : iCalculo); begin FParent:= Parent; @@ -165,4 +230,5 @@ class function TDelphiFiscalCST.New(Parent : iCalculo) : iCST; Result:= Self.create(Parent); end; + end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas new file mode 100644 index 0000000..a9f50bc --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas @@ -0,0 +1,66 @@ +unit DelphiFiscal.Impostos.CST.COFINS01; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TCOFINS01 = class(TInterfacedObject, iCOFINS01) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iCOFINS01; + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TCOFINS01 } + +uses Delphiscal.Utils; + +function TCOFINS01.BaseCofins: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TCOFINS01.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TCOFINS01.Destroy; +begin + + inherited; +end; + +function TCOFINS01.&End: iCST; +begin + Result:= FParent; +end; + +class function TCOFINS01.New(Parent: iCST): iCOFINS01; +begin + Result:= Self.Create(Parent); +end; + +function TCOFINS01.ValorCofins: Double; +begin + Result := RoundABNT(BaseCofins * (FParent.&End.COFINS.AliquotaCOFINS / 100), 2); +end; + +function TCOFINS01.ValorCofinsEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.COFINS.QtdeCOFINSTributada * FParent.&End.COFINS.ValorCOFINSPorUnidade), 2); +end; + +end. + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas new file mode 100644 index 0000000..01ba030 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas @@ -0,0 +1,66 @@ +unit DelphiFiscal.Impostos.CST.COFINS02; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TCOFINS02 = class(TInterfacedObject, iCOFINS02) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iCOFINS02; + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TCOFINS02 } + +uses Delphiscal.Utils; + +function TCOFINS02.BaseCofins: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TCOFINS02.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TCOFINS02.Destroy; +begin + + inherited; +end; + +function TCOFINS02.&End: iCST; +begin + Result:= FParent; +end; + +class function TCOFINS02.New(Parent: iCST): iCOFINS02; +begin + Result:= Self.Create(Parent); +end; + +function TCOFINS02.ValorCofins: Double; +begin + Result := RoundABNT(BaseCofins * (FParent.&End.PIS.AliquotaPIS / 100), 2); +end; + +function TCOFINS02.ValorCofinsEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); +end; + +end. + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas new file mode 100644 index 0000000..aa044cb --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas @@ -0,0 +1,67 @@ +unit DelphiFiscal.Impostos.CST.COFINS03; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TCOFINS03 = class(TInterfacedObject, iCOFINS03) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iCOFINS03; + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TCOFINS03 } + +uses Delphiscal.Utils; + +function TCOFINS03.BaseCofins: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TCOFINS03.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TCOFINS03.Destroy; +begin + + inherited; +end; + +function TCOFINS03.&End: iCST; +begin + Result:= FParent; +end; + +class function TCOFINS03.New(Parent: iCST): iCOFINS03; +begin + Result:= Self.Create(Parent); +end; + +function TCOFINS03.ValorCofins: Double; +begin + Result := RoundABNT(BaseCofins * (FParent.&End.PIS.AliquotaPIS / 100), 2); +end; + +function TCOFINS03.ValorCofinsEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); +end; + +end. + + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas new file mode 100644 index 0000000..c8e0caa --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas @@ -0,0 +1,66 @@ +unit DelphiFiscal.Impostos.CST.PIS01; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TPIS01 = class(TInterfacedObject, iPIS01) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iPIS01; + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TPIS01 } + +uses Delphiscal.Utils; + +function TPIS01.BasePis: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TPIS01.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TPIS01.Destroy; +begin + + inherited; +end; + +function TPIS01.&End: iCST; +begin + Result:= FParent; +end; + +class function TPIS01.New(Parent: iCST): iPIS01; +begin + Result:= Self.Create(Parent); +end; + +function TPIS01.ValorPis: Double; +begin + Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); +end; + +function TPIS01.ValorPisEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); +end; + +end. + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas new file mode 100644 index 0000000..bb76321 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas @@ -0,0 +1,67 @@ +unit DelphiFiscal.Impostos.CST.PIS02; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TPIS02 = class(TInterfacedObject, iPIS02) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iPIS02; + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TPIS02 } + +uses Delphiscal.Utils; + +function TPIS02.BasePis: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TPIS02.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TPIS02.Destroy; +begin + + inherited; +end; + +function TPIS02.&End: iCST; +begin + Result:= FParent; +end; + +class function TPIS02.New(Parent: iCST): iPIS02; +begin + Result:= Self.Create(Parent); +end; + +function TPIS02.ValorPis: Double; +begin + Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); +end; + +function TPIS02.ValorPisEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); +end; + +end. + + diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas new file mode 100644 index 0000000..8c70ad5 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas @@ -0,0 +1,67 @@ +unit DelphiFiscal.Impostos.CST.PIS03; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TPIS03 = class(TInterfacedObject, iPIS03) + private + [weak] + FParent : iCST; + public + constructor Create(Parent : iCST); + destructor Destroy; override; + class function New(Parent : iCST) : iPIS03; + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + Function &End : iCST; + end; + +implementation + +{ TPIS03 } + +uses Delphiscal.Utils; + +function TPIS03.BasePis: Double; +begin + result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); +end; + +constructor TPIS03.Create(Parent: iCST); +begin + FParent:= Parent; +end; + +destructor TPIS03.Destroy; +begin + + inherited; +end; + +function TPIS03.&End: iCST; +begin + Result:= FParent; +end; + +class function TPIS03.New(Parent: iCST): iPIS03; +begin + Result:= Self.Create(Parent); +end; + +function TPIS03.ValorPis: Double; +begin + Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); +end; + +function TPIS03.ValorPisEspecifico: Double; +begin + Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); +end; + +end. + + diff --git a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas index 62a436e..a02ada5 100644 --- a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas +++ b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas @@ -7,6 +7,8 @@ interface iICMS = interface; iCST = interface; iIPI = interface; + iPIS = interface; + iCOFINS = interface; iICMS00 = interface; iICMS10 = interface; iICMS20 = interface; @@ -18,6 +20,12 @@ interface iICMS202 = interface; iICMS203 = interface; iIPI50 = interface; + iPIS01 = interface; + iPIS02 = interface; + iPIS03 = interface; + iCOFINS01 = interface; + iCOFINS02 = interface; + iCOFINS03 = interface; iCalculo = interface ['{15AE0E74-C00A-41BC-8D42-ED45CE6D957B}'] @@ -29,9 +37,13 @@ interface function ValorSeguro : double; overload; function ValorDespesasAcessorias(aValue : double) : iCalculo; overload; function ValorDespesasAcessorias : double; overload; + function ValorDescontos(aValue : double) : iCalculo; overload; + function ValorDescontos : double; overload; function ST : iST; function ICMS : iICMS; function IPI : iIPI; + function PIS : iPIS; + function COFINS : iCOFINS; end; iIPI = interface @@ -45,6 +57,28 @@ interface function &End : iCalculo; end; + iPIS = interface + ['{8FC6C2EA-4A1D-43AB-A55D-631E05C39145}'] + function AliquotaPIS(aValue : double) : iPIS; overload; + function AliquotaPIS : double; overload; + function ValorPISPorUnidade(aValue : double) : iPIS; overload; + function ValorPISPorUnidade : double; overload; + function QtdePISTributada(aValue : double) : iPIS; overload; + function QtdePISTributada : double; overload; + function &End : iCalculo; + end; + + iCOFINS = interface + ['{8FC6C2EA-4A1D-43AB-A55D-631E05C39145}'] + function AliquotaCOFINS(aValue : double) : iCOFINS; overload; + function AliquotaCOFINS : double; overload; + function ValorCOFINSPorUnidade(aValue : double) : iCOFINS; overload; + function ValorCOFINSPorUnidade : double; overload; + function QtdeCOFINSTributada(aValue : double) : iCOFINS; overload; + function QtdeCOFINSTributada : double; overload; + function &End : iCalculo; + end; + iST = interface ['{CADDC667-BDE5-4197-AA5B-1D892268ED2A}'] function AliquotaICMSST(aValue : double) : iST; overload; @@ -63,7 +97,6 @@ interface function CST : iCST; function ValorIPI(aValue : double) : iICMS; overload; function ValorIPI : double; overload; - function ValorDescontos(aValue : double) : iICMS; function PercentualReducao(aValue : double) : iICMS; function PercentualDiferimento(aValue : double) : iICMS; overload; function PercentualDiferimento : double; overload; @@ -94,6 +127,12 @@ interface function ICMS202 : iICMS202; function ICMS203 : iICMS203; function IPI50 : iIPI50; + function PIS01 : iPIS01; + function PIS02 : iPIS02; + function PIS03 : iPIS03; + function COFINS01 : iCOFINS01; + function COFINS02 : iCOFINS02; + function COFINS03 : iCOFINS03; function &End : iCalculo; end; @@ -190,12 +229,55 @@ interface end; iIPI50 = interface - ['{24BB6486-20AB-4AE1-B932-C753CEF023FB}'] + ['{97A056A1-1778-48C8-85D3-BC5F6205FD3F}'] function BaseIpi: Double; function ValorIpi: Double; function ValorIpiEspecifico: Double; end; + iPIS01 = interface + ['{9214FC95-C7D5-49E2-9218-AA55C237B9F5}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iPIS02 = interface + ['{75A2EBF0-EFE9-4070-B6F7-D39617241D88}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iPIS03 = interface + ['{3E365284-F553-47ED-817D-E15799CFDC02}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iCOFINS01 = interface + ['{1902D2F2-2A8F-442D-9127-8294C96D89CD}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; + + iCOFINS02 = interface + ['{4A8EF1EA-C2AB-449E-BEFC-F95BDA10DC95}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; + + iCOFINS03 = interface + ['{C85A50D8-A8D6-4DC4-B120-9A7483AC95ED}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; + + implementation end. diff --git a/src/Calculos/DelphiFiscal.Calculos.pas b/src/Calculos/DelphiFiscal.Calculos.pas index 25cd028..b8a478b 100644 --- a/src/Calculos/DelphiFiscal.Calculos.pas +++ b/src/Calculos/DelphiFiscal.Calculos.pas @@ -12,9 +12,12 @@ TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) FValorFrete : double; FValorSeguro : double; FValorDespesasAcessorias : double; + FValorDesconto : double; FICSM : iICMS; FST : iST; FIPI : iIPI; + FPIS : iPIS; + FCOFINS : iCOFINS; public constructor create; destructor destroy; override; @@ -27,9 +30,13 @@ TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) function ValorSeguro : double; overload; function ValorDespesasAcessorias(aValue : double) : iCalculo; overload; function ValorDespesasAcessorias : double; overload; + function ValorDescontos(aValue : double) : iCalculo; overload; + function ValorDescontos : double; overload; function ST : iST; function IPI : iIPI; + function PIS : iPIS; function ICMS : iICMS; + function COFINS : iCOFINS; end; implementation @@ -37,10 +44,19 @@ implementation uses DelphiFiscal.Calculos.ICMS, DelphiFiscal.Calculos.ST, - DelphiFiscal.Calculos.IPI; + DelphiFiscal.Calculos.IPI, + DelphiFiscal.Calculos.PIS, DelphiFiscal.Calculos.COFINS; { TDelphiFiscalCalculos } +function TDelphiFiscalCalculos.COFINS: iCOFINS; +begin + if not Assigned(FCOFINS) then + FCOFINS:= TDelphiFiscalCOFINS.New(self); + + Result:= FCOFINS; +end; + constructor TDelphiFiscalCalculos.create; begin @@ -73,6 +89,14 @@ class function TDelphiFiscalCalculos.New: iCalculo; Result:= Self.create end; +function TDelphiFiscalCalculos.PIS: iPIS; +begin + if not Assigned(FPIS) then + FPIS:= TDelphiFiscalPIS.New(self); + + Result:= FPIS; +end; + function TDelphiFiscalCalculos.ST: iST; begin if not Assigned(FST) then @@ -81,6 +105,17 @@ function TDelphiFiscalCalculos.ST: iST; Result:= FST; end; +function TDelphiFiscalCalculos.ValorDescontos: double; +begin + Result:= FValorDesconto; +end; + +function TDelphiFiscalCalculos.ValorDescontos(aValue: double): iCalculo; +begin + Result:= Self; + FValorDesconto:= aValue; +end; + function TDelphiFiscalCalculos.ValorDespesasAcessorias: double; begin Result:= FValorDespesasAcessorias; diff --git a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas index 4db73b1..cde5cd7 100644 --- a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas +++ b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas @@ -13,7 +13,6 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) FCST : iCST; FValorIpi: Double; - FValorDesconto: Double; FPercentualReducao: Double; FBaseICMSNormal : Double; FContemReducao : boolean; @@ -34,7 +33,6 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) function CST : iCST; function ValorIPI(aValue : double) : iICMS; overload; function ValorIPI : double; overload; - function ValorDescontos(aValue : double) : iICMS; function PercentualReducao(aValue : double) : iICMS; function PercentualDiferimento(aValue : double) : iICMS; overload; function PercentualDiferimento : double; overload; @@ -110,7 +108,7 @@ function TDelphiFiscalICMS.PercentualCreditoICMSSN(aValue: double): iICMS; function TDelphiFiscalICMS.BaseICMSNormal : double; begin - Result:= RoundABNT(FParent.ValorProduto + FParent.Valorfrete + FParent.ValorSeguro + FParent.ValorDespesasAcessorias + FValorIpi - FValorDesconto, 2); + Result:= RoundABNT(FParent.ValorProduto + FParent.Valorfrete + FParent.ValorSeguro + FParent.ValorDespesasAcessorias + FValorIpi - FParent.ValorDescontos, 2); end; function TDelphiFiscalICMS.BaseICMSProprio : double; @@ -140,12 +138,6 @@ function TDelphiFiscalICMS.ContemReducao(aValue: boolean): iICMS; FContemReducao:= aValue; end; -function TDelphiFiscalICMS.ValorDescontos(aValue: double): iICMS; -begin - Result:= self; - FValorDesconto:= aValue; -end; - function TDelphiFiscalICMS.ValorICMS: Double; begin Result:= RoundABNT((BaseICMSNormal * (AliquotaIcms / 100)), 2); diff --git a/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas new file mode 100644 index 0000000..3fbfac1 --- /dev/null +++ b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas @@ -0,0 +1,88 @@ +unit DelphiFiscal.Calculos.PIS; + +interface + +uses + DelphiFiscal.Calculos.Interfaces; + +type + TDelphiFiscalPIS = class(TInterfacedObject, iPIS) + private + [weak] + FParent : iCalculo; + FAliquotaPIS : double; + FValorIPIPorUnidade : double; + FQtdeIPITributada : double; + public + constructor create(Parent : iCalculo); + destructor destroy; override; + class function New(Parent : iCalculo) : iPIS; + function AliquotaPIS(aValue : double) : iPIS; overload; + function AliquotaPIS : double; overload; + function ValorPISPorUnidade(aValue : double) : iPIS; overload; + function ValorPISPorUnidade : double; overload; + function QtdePISTributada(aValue : double) : iPIS; overload; + function QtdePISTributada : double; overload; + function &End : iCalculo; + end; +implementation + +{ TDelphiFiscalPIS } + +uses Delphiscal.Utils; + +function TDelphiFiscalPIS.&End: iCalculo; +begin + Result:= FParent; +end; + +function TDelphiFiscalPIS.AliquotaPIS(aValue: double): iPIS; +begin + Result:= Self; + FAliquotaPIS:= aValue; +end; + +function TDelphiFiscalPIS.AliquotaPIS: double; +begin + Result:= FAliquotaPIS; +end; + +constructor TDelphiFiscalPIS.create(Parent: iCalculo); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalPIS.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalPIS.New(Parent: iCalculo): iPIS; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalPIS.QtdePISTributada: double; +begin + Result:= FQtdeIPITributada; +end; + +function TDelphiFiscalPIS.QtdePISTributada(aValue: double): iPIS; +begin + Result:= Self; + FQtdeIPITributada:= aValue; +end; + +function TDelphiFiscalPIS.ValorPISPorUnidade(aValue: double): iPIS; +begin + Result:= Self; + FValorIPIPorUnidade:= aValue; +end; + +function TDelphiFiscalPIS.ValorPISPorUnidade: double; +begin + Result:= FValorIPIPorUnidade; +end; + +end. diff --git a/src/Delphiscal.Utils.pas b/src/Calculos/Util/Delphiscal.Utils.pas similarity index 100% rename from src/Delphiscal.Utils.pas rename to src/Calculos/Util/Delphiscal.Utils.pas diff --git a/src/Delphiscal.Cofins.Base.pas b/src/Delphiscal.Cofins.Base.pas deleted file mode 100644 index 8ab4801..0000000 --- a/src/Delphiscal.Cofins.Base.pas +++ /dev/null @@ -1,38 +0,0 @@ -unit Delphiscal.Cofins.Base; - -interface - -type - TBaseCofins = class - private - FValorProduto: Currency; - FValorfrete: Currency; - FValorSeguro: Currency; - FDespesasAcessorias: Currency; - FValorDesconto: Currency; - FValorIcmsProprio: Currency; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Currency; const AValorIcmsProprio: Currency = 0); - function CalcularBaseCofins: Currency; - end; - -implementation - -uses acbrutil.math; - -constructor TBaseCofins.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Currency; const AValorIcmsProprio: Currency = 0); -begin - FValorProduto := AValorProduto; - FValorfrete := AValorFrete; - FValorSeguro := AValorSeguro; - FDespesasAcessorias := ADespesasAcessorias; - FValorDesconto := AValorDesconto; - FValorIcmsProprio := AValorIcmsProprio; -end; - -function TBaseCofins.CalcularBaseCofins: Currency; -begin - Result := RoundABNT((FValorProduto + FValorfrete + FValorSeguro + FDespesasAcessorias - FValorDesconto) - FValorIcmsProprio, 2); -end; - -end. diff --git a/src/Delphiscal.Cofins01_02.Intf.pas b/src/Delphiscal.Cofins01_02.Intf.pas deleted file mode 100644 index 8230135..0000000 --- a/src/Delphiscal.Cofins01_02.Intf.pas +++ /dev/null @@ -1,14 +0,0 @@ -unit Delphiscal.Cofins01_02.Intf; - -interface - -type - ICofins01_02 = interface - ['{0AA2120A-D209-49CD-90FA-6802F380459C}'] - function BaseCofins: Double; - function ValorCofins: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Cofins01_02.pas b/src/Delphiscal.Cofins01_02.pas deleted file mode 100644 index ade1aa6..0000000 --- a/src/Delphiscal.Cofins01_02.pas +++ /dev/null @@ -1,55 +0,0 @@ -unit Delphiscal.Cofins01_02; - -interface - -uses Delphiscal.Cofins.Base, Delphiscal.Cofins01_02.Intf; - -type - TCofins01_02 = class(TInterfacedObject, ICofins01_02) - private - FBaseCofins: TBaseCofins; - FAliquotaCofins: Double; - function BaseCofins: Double; - function ValorCofins: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaCofins: Double); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaCofins: Double): ICofins01_02; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -function TCofins01_02.BaseCofins: Double; -begin - Result := FBaseCofins.CalcularBaseCofins; -end; - -constructor TCofins01_02.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaCofins: Double); -begin - FBaseCofins := TBaseCofins.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto); - FAliquotaCofins := AAliquotaCofins; -end; - -destructor TCofins01_02.Destroy; -begin - FBaseCofins.Free; - inherited; -end; - -class function TCofins01_02.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaCofins: Double): ICofins01_02; -begin - Result := TCofins01_02.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaCofins); -end; - -function TCofins01_02.ValorCofins: Double; -begin - Result := RoundABNT(BaseCofins * (FAliquotaCofins / 100), 2); -end; - -end. diff --git a/src/Delphiscal.Cofins03.Intf.pas b/src/Delphiscal.Cofins03.Intf.pas deleted file mode 100644 index c6abaf2..0000000 --- a/src/Delphiscal.Cofins03.Intf.pas +++ /dev/null @@ -1,15 +0,0 @@ -unit Delphiscal.Cofins03.Intf; - -interface - -type - ICofins03 = interface - ['{20877889-9559-4916-9D7A-1CEB3367ADD3}'] - function ValorCofins: Double; - function QuantidadeTributada(const AValue: Double): ICofins03; - function ValorPorUnidadeTributada(const AValue: Double): ICofins03; - end; - -implementation - -end. diff --git a/src/Delphiscal.Cofins03.pas b/src/Delphiscal.Cofins03.pas deleted file mode 100644 index afc880c..0000000 --- a/src/Delphiscal.Cofins03.pas +++ /dev/null @@ -1,58 +0,0 @@ -unit Delphiscal.Cofins03; - -interface - -uses Delphiscal.Cofins03.Intf; - -type - TCofins03 = class(TInterfacedObject, ICofins03) - private - FQuantidadeTributada: Double; - FValorUnidadeTributada: Double; - function ValorCofins: Double; - function QuantidadeTributada(const AValue: Double): ICofins03; - function ValorPorUnidadeTributada(const AValue: Double): ICofins03; - public - constructor Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); overload; - class function New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): ICofins03; overload; - class function New: ICofins03; overload; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TCofins03.Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); -begin - FQuantidadeTributada := AQuantidadeTributada; - FValorUnidadeTributada := AValorPorUnidadeTributada; -end; - -class function TCofins03.New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): ICofins03; -begin - Result := TCofins03.Create(AQuantidadeTributada, AValorPorUnidadeTributada); -end; - -class function TCofins03.New: ICofins03; -begin - Result := TCofins03.Create; -end; - -function TCofins03.ValorCofins: Double; -begin - Result := RoundABNT((FQuantidadeTributada * FValorUnidadeTributada), 2); -end; - -function TCofins03.QuantidadeTributada(const AValue: Double): ICofins03; -begin - FQuantidadeTributada := AValue; - Result := Self; -end; - -function TCofins03.ValorPorUnidadeTributada(const AValue: Double): ICofins03; -begin - FValorUnidadeTributada := AValue; - Result := Self; -end; - -end. diff --git a/src/Delphiscal.Icms.BaseProprio.pas b/src/Delphiscal.Icms.BaseProprio.pas deleted file mode 100644 index d6bc719..0000000 --- a/src/Delphiscal.Icms.BaseProprio.pas +++ /dev/null @@ -1,66 +0,0 @@ -unit Delphiscal.Icms.BaseProprio; - -interface - -type - TBaseIcmsProprio = class - private - FvalorProduto: Double; - Fvalorfrete: Double; - FvalorSeguro: Double; - FdespesasAcessorias: Double; - FvalorIpi: Double; - FvalorDesconto: Double; - FpercentualReducao: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Double; - const APercentualReducao: Double = 0; const AValorIpi: Double = 0); - function CalcularBaseIcmsProprio: Double; - function CalcularBaseNormal: Double; - function CalcularBaseReduzida: Double; - function ContemReducao: Boolean; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TBaseIcmsProprio.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Double; - const APercentualReducao: Double = 0; const AValorIpi: Double = 0); -begin - FvalorProduto := AValorProduto; - Fvalorfrete := AValorFrete; - FvalorSeguro := AValorSeguro; - FdespesasAcessorias := ADespesasAcessorias; - FvalorDesconto := AValorDesconto; - FvalorIpi := AValorIpi; - FpercentualReducao := APercentualReducao; -end; - -function TBaseIcmsProprio.CalcularBaseIcmsProprio: Double; -begin - if ContemReducao then - Result := CalcularBaseReduzida - else - Result := CalcularBaseNormal; -end; - -function TBaseIcmsProprio.CalcularBaseNormal: Double; -begin - Result := RoundABNT(FvalorProduto + Fvalorfrete + FvalorSeguro + FdespesasAcessorias + FvalorIpi - FvalorDesconto, 2); -end; - -function TBaseIcmsProprio.CalcularBaseReduzida: Double; -var - LBaseIcms: Double; -begin - LBaseIcms := CalcularBaseNormal; - Result := RoundABNT((LBaseIcms - (LBaseIcms * (FpercentualReducao / 100))), 2); -end; - -function TBaseIcmsProprio.ContemReducao: Boolean; -begin - Result := FpercentualReducao > 0; -end; - -end. diff --git a/src/Delphiscal.Icms.BaseST.pas b/src/Delphiscal.Icms.BaseST.pas deleted file mode 100644 index 9a0191e..0000000 --- a/src/Delphiscal.Icms.BaseST.pas +++ /dev/null @@ -1,62 +0,0 @@ -unit Delphiscal.Icms.BaseST; - -interface - -uses Delphiscal.Icms.BaseProprio; - -type - TBaseIcmsST = class - private - FBaseIcmsProprio: TBaseIcmsProprio; - FPercentualReducaoST: Double; - FMva: Double; - FValorIpi: Double; - public - constructor Create(const ABaseIcmsProprio: TBaseIcmsProprio; const AMva: Double; const APercentualReducaoST: Double = 0; - const AValorIpi: Double = 0); - function CalcularBaseIcmsST: Double; - function CalcularBaseNormalST: Double; - function CalcularBaseReduzidaST: Double; - function ContemReducaoST: Boolean; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TBaseIcmsST.Create(const ABaseIcmsProprio: TBaseIcmsProprio; const AMva: Double; - const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := ABaseIcmsProprio; - FMva := AMva; - FPercentualReducaoST := APercentualReducaoST; - FValorIpi := AValorIpi; -end; - -function TBaseIcmsST.CalcularBaseIcmsST: Double; -begin - if FPercentualReducaoST > 0 then - Result := CalcularBaseReduzidaST - else - Result := CalcularBaseNormalST; -end; - -function TBaseIcmsST.CalcularBaseNormalST: Double; -begin - Result := RoundABNT((FBaseIcmsProprio.CalcularBaseIcmsProprio + FValorIpi) * (1 + (FMva / 100)), 2); -end; - -function TBaseIcmsST.CalcularBaseReduzidaST: Double; -var - LBaseIcmsST: Double; -begin - LBaseIcmsST := RoundABNT((FBaseIcmsProprio.CalcularBaseIcmsProprio) * (1 + (FMva / 100)), 2); - Result := RoundABNT((LBaseIcmsST - RoundABNT((LBaseIcmsST * (FPercentualReducaoST / 100)), 2) + FValorIpi), 2); -end; - -function TBaseIcmsST.ContemReducaoST: Boolean; -begin - Result := FPercentualReducaoST > 0; -end; - -end. diff --git a/src/Delphiscal.Icms.Valor.ST.pas b/src/Delphiscal.Icms.Valor.ST.pas deleted file mode 100644 index 98f24f8..0000000 --- a/src/Delphiscal.Icms.Valor.ST.pas +++ /dev/null @@ -1,49 +0,0 @@ -unit Delphiscal.Icms.Valor.ST; - -interface - -uses Delphiscal.Icms.BaseST, Delphiscal.Icms.Valor; - -type - TValorIcmsST = class - private - FBaseIcmsST: TBaseIcmsST; - FAliquotaST: Double; - FValorIcmsProprio: TValorIcms; - public - constructor Create(const ABaseIcmsST: TBaseIcmsST; const AAliquotaST: Double; const AValorIcmsProrpio: TValorIcms); - function CalcularValorIcmsST: Double; - function CalcularValorReduzidoIcmsST: Double; - function CalcularValorNormalIcmsST: Double; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TValorIcmsST.Create(const ABaseIcmsST: TBaseIcmsST; const AAliquotaST: Double; const AValorIcmsProrpio: TValorIcms); -begin - FBaseIcmsST := ABaseIcmsST; - FAliquotaST := AAliquotaST; - FValorIcmsProprio := AValorIcmsProrpio; -end; - -function TValorIcmsST.CalcularValorIcmsST: Double; -begin - if FBaseIcmsST.ContemReducaoST then - Result := CalcularValorReduzidoIcmsST - else - Result := CalcularValorNormalIcmsST; -end; - -function TValorIcmsST.CalcularValorNormalIcmsST: Double; -begin - Result := RoundABNT((FBaseIcmsST.CalcularBaseNormalST * (FAliquotaST / 100) - FValorIcmsProprio.GetValorIcms), 2); -end; - -function TValorIcmsST.CalcularValorReduzidoIcmsST: Double; -begin - Result := RoundABNT((FBaseIcmsST.CalcularBaseReduzidaST * (FAliquotaST / 100) - FValorIcmsProprio.GetValorIcms), 2); -end; - -end. diff --git a/src/Delphiscal.Icms.Valor.pas b/src/Delphiscal.Icms.Valor.pas deleted file mode 100644 index 1877d5c..0000000 --- a/src/Delphiscal.Icms.Valor.pas +++ /dev/null @@ -1,48 +0,0 @@ -unit Delphiscal.Icms.Valor; - -interface - -uses Delphiscal.Icms.BaseProprio; - -type - TValorIcms = class - private - FBaseIcms: TBaseIcmsProprio; - FAliquotaIcms: Double; - public - constructor Create(const ABaseIcmsProprio: TBaseIcmsProprio; const AAliquotaIcmsProprio: Double); - property AliquotaIcms: Double read FAliquotaIcms write FAliquotaIcms; - function GetValorIcms: Double; - function CalcularValorReduzidoIcms: Double; - function CalcularValorNormalIcms: Double; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TValorIcms.Create(const ABaseIcmsProprio: TBaseIcmsProprio; const AAliquotaIcmsProprio: Double); -begin - FBaseIcms := ABaseIcmsProprio; - AliquotaIcms := AAliquotaIcmsProprio; -end; - -function TValorIcms.GetValorIcms: Double; -begin - if FBaseIcms.ContemReducao then - Result := CalcularValorReduzidoIcms - else - Result := CalcularValorNormalIcms; -end; - -function TValorIcms.CalcularValorNormalIcms: Double; -begin - Result := RoundABNT((FBaseIcms.CalcularBaseNormal * (AliquotaIcms / 100)), 2); -end; - -function TValorIcms.CalcularValorReduzidoIcms: Double; -begin - Result := RoundABNT((FBaseIcms.CalcularBaseReduzida * (AliquotaIcms / 100)), 2); -end; - -end. diff --git a/src/Delphiscal.Icms00.Intf.pas b/src/Delphiscal.Icms00.Intf.pas deleted file mode 100644 index 7bfac41..0000000 --- a/src/Delphiscal.Icms00.Intf.pas +++ /dev/null @@ -1,14 +0,0 @@ -unit Delphiscal.Icms00.Intf; - -interface - -type - IIcms00 = interface - ['{1562944F-E256-4BBB-9A9D-6DF253CE5150}'] - function BaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms00.pas b/src/Delphiscal.Icms00.pas deleted file mode 100644 index 5e83a9b..0000000 --- a/src/Delphiscal.Icms00.pas +++ /dev/null @@ -1,53 +0,0 @@ -unit Delphiscal.Icms00; -interface - -uses Delphiscal.Icms.BaseProprio, - Delphiscal.Icms.Valor, - Delphiscal.Icms00.Intf; - -type - TIcms00 = class(TInterfacedObject, IIcms00) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FValorIcms: TValorIcms; - function BaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS: Double; - const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS: Double; - const AValorIpi: Double = 0): IIcms00; - destructor Destroy; override; - end; -implementation - -uses Delphiscal.Utils; - -function TIcms00.BaseIcmsProprio: Double; -begin - Result := RoundABNT(FBaseIcmsProprio.CalcularBaseIcmsProprio, 2); -end; -constructor TIcms00.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AALiquotaICMS: Double; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, 0, - AValorIpi); - FValorIcms := TValorIcms.Create(FBaseIcmsProprio, AALiquotaICMS); -end; -destructor TIcms00.Destroy; -begin - FValorIcms.Free; - FBaseIcmsProprio.Free; - inherited; -end; -class function TIcms00.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - AValorIpi: Double): IIcms00; -begin - Result := TIcms00.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - AValorIpi); -end; -function TIcms00.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FValorIcms.GetValorIcms, 2); -end; -end. diff --git a/src/Delphiscal.Icms10.Intf.pas b/src/Delphiscal.Icms10.Intf.pas deleted file mode 100644 index 5c1f0eb..0000000 --- a/src/Delphiscal.Icms10.Intf.pas +++ /dev/null @@ -1,17 +0,0 @@ -unit Delphiscal.Icms10.Intf; - -interface - -type - IIcms10 = interface - ['{DFD62780-2371-458E-A061-6714FBC4E08B}'] - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsSTDesonerado: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms10.pas b/src/Delphiscal.Icms10.pas deleted file mode 100644 index 4dce7fd..0000000 --- a/src/Delphiscal.Icms10.pas +++ /dev/null @@ -1,84 +0,0 @@ -unit Delphiscal.Icms10; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms.BaseST, Delphiscal.Icms.Valor.ST, Delphiscal.Icms10.Intf; - -type - TIcms10 = class(TInterfacedObject, IIcms10) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FIcmsProprio: TValorIcms; - FBaseIcmsST: TBaseIcmsST; - FIcmsST: TValorIcmsST; - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsSTDesonerado: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0): IIcms10; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms10.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto); - FIcmsProprio := TValorIcms.Create(FBaseIcmsProprio, AAliquotaIcms); - FBaseIcmsST := TBaseIcmsST.Create(FBaseIcmsProprio, AMva, APercentualReducaoST, AValorIpi); - FIcmsST := TValorIcmsST.Create(FBaseIcmsST, AAliquotaIcmsST, FIcmsProprio); -end; - -destructor TIcms10.Destroy; -begin - FBaseIcmsProprio.Free; - FIcmsProprio.Free; - FBaseIcmsST.Free; - FIcmsST.Free; - inherited; -end; - -class function TIcms10.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi: Double): IIcms10; -begin - Result := TIcms10.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi); -end; - -function TIcms10.ValorBaseIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseIcmsProprio; -end; - -function TIcms10.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FIcmsProprio.GetValorIcms, 2); -end; - -function TIcms10.ValorBaseIcmsST: Double; -begin - Result := FBaseIcmsST.CalcularBaseIcmsST; -end; - -function TIcms10.ValorIcmsST: Double; -begin - Result := RoundABNT(FIcmsST.CalcularValorIcmsST, 2); -end; - -function TIcms10.ValorIcmsSTDesonerado: Double; -var - LValorIcmsStNormal: Double; -begin - LValorIcmsStNormal := FIcmsST.CalcularValorNormalIcmsST; - Result := RoundABNT(LValorIcmsStNormal - FIcmsST.CalcularValorIcmsST, 2); -end; - -end. diff --git a/src/Delphiscal.Icms101.Intf.pas b/src/Delphiscal.Icms101.Intf.pas deleted file mode 100644 index 36d2065..0000000 --- a/src/Delphiscal.Icms101.Intf.pas +++ /dev/null @@ -1,14 +0,0 @@ -unit Delphiscal.Icms101.Intf; - -interface - -type - IIcms101 = interface - ['{195FEAD4-4AAE-4374-B28A-97123D0B727F}'] - function BaseCreditoSN: Double; - function ValorCreditoSN: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms101.pas b/src/Delphiscal.Icms101.pas deleted file mode 100644 index 189dd49..0000000 --- a/src/Delphiscal.Icms101.pas +++ /dev/null @@ -1,57 +0,0 @@ -unit Delphiscal.Icms101; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms101.Intf; - -type - TIcms101 = class(TInterfacedObject, IIcms101) - private - FBaseCreditoSN: TBaseIcmsProprio; - FPercentualCreditoSN: Double; - function BaseCreditoSN: Double; - function ValorCreditoSN: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualCreditoSN: Double; const APercentualReducao: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualCreditoSN: Double; const APercentualReducao: Double = 0): IIcms101; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -function TIcms101.BaseCreditoSN: Double; -begin - Result := RoundABNT(FBaseCreditoSN.CalcularBaseIcmsProprio, 2); -end; - -constructor TIcms101.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualCreditoSN: Double; const APercentualReducao: Double = 0); -begin - FBaseCreditoSN := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualReducao); - FPercentualCreditoSN := APercentualCreditoSN; -end; - -destructor TIcms101.Destroy; -begin - FBaseCreditoSN.Free; - inherited; -end; - -class function TIcms101.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualCreditoSN, APercentualReducao: Double): IIcms101; -begin - Result := TIcms101.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, APercentualCreditoSN, - APercentualReducao); -end; - -function TIcms101.ValorCreditoSN: Double; -begin - Result := RoundABNT(BaseCreditoSN * (FPercentualCreditoSN / 100), 2); -end; - -end. diff --git a/src/Delphiscal.Icms20.Intf.pas b/src/Delphiscal.Icms20.Intf.pas deleted file mode 100644 index 8eadb03..0000000 --- a/src/Delphiscal.Icms20.Intf.pas +++ /dev/null @@ -1,15 +0,0 @@ -unit Delphiscal.Icms20.Intf; - -interface - -type - IIcms20 = interface - ['{B85C4D5F-A2B3-437E-BC40-1EF5ADFC4666}'] - function BaseReduzidaIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorIcmsDesonerado: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms20.pas b/src/Delphiscal.Icms20.pas deleted file mode 100644 index 8b8b6bb..0000000 --- a/src/Delphiscal.Icms20.pas +++ /dev/null @@ -1,67 +0,0 @@ -unit Delphiscal.Icms20; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms20.Intf; - -type - TIcms20 = class(TInterfacedObject, IIcms20) - private - FBaseReduzidaIcmsProprio: TBaseIcmsProprio; - FValorIcms: TValorIcms; - function BaseReduzidaIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorIcmsDesonerado: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao: Double; const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao: Double; const AValorIpi: Double = 0): IIcms20; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms20.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao: Double; const AValorIpi: Double = 0); -begin - FBaseReduzidaIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, - AValorDesconto, APercentualReducao, AValorIpi); - FValorIcms := TValorIcms.Create(FBaseReduzidaIcmsProprio, AAliquotaIcms); -end; - -function TIcms20.BaseReduzidaIcmsProprio: Double; -begin - Result := FBaseReduzidaIcmsProprio.CalcularBaseReduzida; -end; - -function TIcms20.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FValorIcms.GetValorIcms, 2); -end; - -destructor TIcms20.Destroy; -begin - FValorIcms.Free; - FBaseReduzidaIcmsProprio.Free; - inherited; -end; - -class function TIcms20.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AValorIpi: Double): IIcms20; -begin - Result := TIcms20.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AValorIpi); -end; - -function TIcms20.ValorIcmsDesonerado: Double; -var - LalorIcmsNormal: Double; -begin - LalorIcmsNormal := FValorIcms.CalcularValorNormalIcms; - Result := RoundABNT(LalorIcmsNormal - FValorIcms.GetValorIcms, 2); -end; - -end. diff --git a/src/Delphiscal.Icms201.Intf.pas b/src/Delphiscal.Icms201.Intf.pas deleted file mode 100644 index bb14481..0000000 --- a/src/Delphiscal.Icms201.Intf.pas +++ /dev/null @@ -1,17 +0,0 @@ -unit Delphiscal.Icms201.Intf; - -interface - -type - IIcms201 = interface - ['{0196CBA6-7C59-4217-A22A-0AF2D1D3EACD}'] - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorCreditoSN: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms201.pas b/src/Delphiscal.Icms201.pas deleted file mode 100644 index f5b04e4..0000000 --- a/src/Delphiscal.Icms201.pas +++ /dev/null @@ -1,85 +0,0 @@ -unit Delphiscal.Icms201; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms.BaseST, Delphiscal.Icms.Valor.ST, - Delphiscal.Icms201.Intf; - -type - TIcms201 = class(TInterfacedObject, IIcms201) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FIcmsProprio: TValorIcms; - FBaseIcmsST: TBaseIcmsST; - FIcmsST: TValorIcmsST; - FPercentualCreditoSN: Double; - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorCreditoSN: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, APercentualCreditoSN, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, APercentualCreditoSN, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0): IIcms201; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms201.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, APercentualCreditoSN, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualReducao); - FIcmsProprio := TValorIcms.Create(FBaseIcmsProprio, AAliquotaIcms); - FBaseIcmsST := TBaseIcmsST.Create(FBaseIcmsProprio, AMva, APercentualReducaoST); - FIcmsST := TValorIcmsST.Create(FBaseIcmsST, AAliquotaIcmsST, FIcmsProprio); - FPercentualCreditoSN := APercentualCreditoSN; -end; - -destructor TIcms201.Destroy; -begin - FIcmsST.Free; - FBaseIcmsST.Free; - FIcmsProprio.Free; - FBaseIcmsProprio.Free; - inherited; -end; - -class function TIcms201.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, APercentualCreditoSN, AAliquotaIcmsST, AMva, APercentualReducaoST: Double): IIcms201; -begin - Result := TIcms201.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, APercentualCreditoSN, AAliquotaIcmsST, AMva, APercentualReducaoST); -end; - -function TIcms201.ValorBaseIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseIcmsProprio; -end; - -function TIcms201.ValorBaseIcmsST: Double; -begin - Result := FBaseIcmsST.CalcularBaseIcmsST; -end; - -function TIcms201.ValorCreditoSN: Double; -begin - Result := RoundABNT(ValorBaseIcmsProprio * (FPercentualCreditoSN / 100), 2); -end; - -function TIcms201.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FIcmsProprio.GetValorIcms, 2); -end; - -function TIcms201.ValorIcmsST: Double; -begin - Result := RoundABNT(FIcmsST.CalcularValorIcmsST, 2); -end; - -end. diff --git a/src/Delphiscal.Icms202_203.Intf.pas b/src/Delphiscal.Icms202_203.Intf.pas deleted file mode 100644 index 97d1333..0000000 --- a/src/Delphiscal.Icms202_203.Intf.pas +++ /dev/null @@ -1,16 +0,0 @@ -unit Delphiscal.Icms202_203.Intf; - -interface - -type - IIcms202_203 = interface - ['{5221F36A-B657-4298-ADEA-FC9C358C9319}'] - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms202_203.pas b/src/Delphiscal.Icms202_203.pas deleted file mode 100644 index 0e37336..0000000 --- a/src/Delphiscal.Icms202_203.pas +++ /dev/null @@ -1,77 +0,0 @@ -unit Delphiscal.Icms202_203; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms.BaseST, Delphiscal.Icms.Valor.ST, - Delphiscal.Icms202_203.Intf; - -type - TIcms202_203 = class(TInterfacedObject, IIcms202_203) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FIcmsProprio: TValorIcms; - FBaseIcmsST: TBaseIcmsST; - FIcmsST: TValorIcmsST; - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0): IIcms202_203; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms202_203.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaIcms, APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualReducao); - FIcmsProprio := TValorIcms.Create(FBaseIcmsProprio, AAliquotaIcms); - FBaseIcmsST := TBaseIcmsST.Create(FBaseIcmsProprio, AMva, APercentualReducaoST); - FIcmsST := TValorIcmsST.Create(FBaseIcmsST, AAliquotaIcmsST, FIcmsProprio); -end; - -destructor TIcms202_203.Destroy; -begin - FIcmsST.Free; - FBaseIcmsST.Free; - FIcmsProprio.Free; - FBaseIcmsProprio.Free; - inherited; -end; - -class function TIcms202_203.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaIcms, APercentualReducao, AAliquotaIcmsST, AMva, APercentualReducaoST: Double): IIcms202_203; -begin - Result := TIcms202_203.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva, APercentualReducaoST); -end; - -function TIcms202_203.ValorBaseIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseIcmsProprio; -end; - -function TIcms202_203.ValorBaseIcmsST: Double; -begin - Result := FBaseIcmsST.CalcularBaseIcmsST; -end; - -function TIcms202_203.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FIcmsProprio.GetValorIcms, 2); -end; - -function TIcms202_203.ValorIcmsST: Double; -begin - Result := RoundABNT(FIcmsST.CalcularValorIcmsST, 2); -end; - -end. diff --git a/src/Delphiscal.Icms30.Intf.pas b/src/Delphiscal.Icms30.Intf.pas deleted file mode 100644 index 5fc9b3f..0000000 --- a/src/Delphiscal.Icms30.Intf.pas +++ /dev/null @@ -1,17 +0,0 @@ -unit Delphiscal.Icms30.Intf; - -interface - -type - IIcms30 = interface - ['{191D4165-AE68-468A-9015-08F6C0FC8503}'] - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsDesonerado: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms30.pas b/src/Delphiscal.Icms30.pas deleted file mode 100644 index 5a9bebb..0000000 --- a/src/Delphiscal.Icms30.pas +++ /dev/null @@ -1,81 +0,0 @@ -unit Delphiscal.Icms30; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms.Valor.ST, Delphiscal.Icms30.Intf, Delphiscal.Icms.BaseST; - -type - TIcms30 = class(TInterfacedObject, IIcms30) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FIcmsProprio: TValorIcms; - FBaseIcmsST: TBaseIcmsST; - FIcmsST: TValorIcmsST; - function ValorBaseIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsDesonerado: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0): IIcms30; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms30.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto); - FIcmsProprio := TValorIcms.Create(FBaseIcmsProprio, AAliquotaIcms); - FBaseIcmsST := TBaseIcmsST.Create(FBaseIcmsProprio, AMva, APercentualReducaoST); - FIcmsST := TValorIcmsST.Create(FBaseIcmsST, AAliquotaIcmsST, FIcmsProprio); -end; - -destructor TIcms30.Destroy; -begin - FBaseIcmsProprio.Free; - FIcmsProprio.Free; - FBaseIcmsST.Free; - FIcmsST.Free; - inherited; -end; - -class function TIcms30.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi: Double): IIcms30; -begin - Result := TIcms30.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi); -end; - -function TIcms30.ValorBaseIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseIcmsProprio; -end; - -function TIcms30.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FIcmsProprio.GetValorIcms, 2); -end; - -function TIcms30.ValorBaseIcmsST: Double; -begin - Result := FBaseIcmsST.CalcularBaseIcmsST; -end; - -function TIcms30.ValorIcmsST: Double; -begin - Result := RoundABNT(FIcmsST.CalcularValorIcmsST, 2); -end; - -function TIcms30.ValorIcmsDesonerado: Double; -begin - Result := RoundABNT(FIcmsProprio.CalcularValorNormalIcms, 2); -end; - -end. diff --git a/src/Delphiscal.Icms51.Intf.pas b/src/Delphiscal.Icms51.Intf.pas deleted file mode 100644 index 9d1ba35..0000000 --- a/src/Delphiscal.Icms51.Intf.pas +++ /dev/null @@ -1,16 +0,0 @@ -unit Delphiscal.Icms51.Intf; - -interface - -type - IIcms51 = interface - ['{63EF20FC-96C0-4354-BB43-874B524FF009}'] - function BaseIcmsProprio: Double; - function ValorIcmsOperacao: Double; - function ValorIcmsDiferido: Double; - function ValorIcmsProprio: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms51.pas b/src/Delphiscal.Icms51.pas deleted file mode 100644 index 0d943e5..0000000 --- a/src/Delphiscal.Icms51.pas +++ /dev/null @@ -1,72 +0,0 @@ -unit Delphiscal.Icms51; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms51.Intf; - -type - TIcms51 = class(TInterfacedObject, IIcms51) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FValorIcmsOperacao: TValorIcms; - FPercentualDiferimento: Double; - function BaseIcmsProprio: Double; - function ValorIcmsOperacao: Double; - function ValorIcmsDiferido: Double; - function ValorIcmsProprio: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - APercentualDiferimento: Double; const APercentualReducao: Double = 0; const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - APercentualDiferimento: Double; const APercentualReducao: Double = 0; const AValorIpi: Double = 0): IIcms51; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -function TIcms51.BaseIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseIcmsProprio; -end; - -constructor TIcms51.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - APercentualDiferimento: Double; const APercentualReducao: Double = 0; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualReducao, AValorIpi); - FValorIcmsOperacao := TValorIcms.Create(FBaseIcmsProprio, AALiquotaICMS); - FPercentualDiferimento := APercentualDiferimento; -end; - -destructor TIcms51.Destroy; -begin - FValorIcmsOperacao.Free; - FBaseIcmsProprio.Free; - inherited; -end; - -class function TIcms51.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - APercentualDiferimento, APercentualReducao, AValorIpi: Double): IIcms51; -begin - Result := TIcms51.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AALiquotaICMS, - APercentualDiferimento, APercentualReducao, AValorIpi); -end; - -function TIcms51.ValorIcmsDiferido: Double; -begin - Result := RoundABNT(FValorIcmsOperacao.GetValorIcms * (FPercentualDiferimento / 100), 2); -end; - -function TIcms51.ValorIcmsOperacao: Double; -begin - Result := RoundABNT(FValorIcmsOperacao.GetValorIcms, 2); -end; - -function TIcms51.ValorIcmsProprio: Double; -begin - Result := RoundABNT(ValorIcmsOperacao - ValorIcmsDiferido, 2); -end; - -end. diff --git a/src/Delphiscal.Icms70.Intf.pas b/src/Delphiscal.Icms70.Intf.pas deleted file mode 100644 index 09be564..0000000 --- a/src/Delphiscal.Icms70.Intf.pas +++ /dev/null @@ -1,18 +0,0 @@ -unit Delphiscal.Icms70.Intf; - -interface - -type - IIcms70 = interface - ['{D06DEF24-9FAD-4962-A059-60E0598E7804}'] - function ValorBaseReduzidaIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsDesonerado: Double; - function ValorIcmsSTDesonerado(const AValorIcmsStNormal: Double): Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Icms70.pas b/src/Delphiscal.Icms70.pas deleted file mode 100644 index 26f4fbb..0000000 --- a/src/Delphiscal.Icms70.pas +++ /dev/null @@ -1,92 +0,0 @@ -unit Delphiscal.Icms70; - -interface - -uses Delphiscal.Icms.BaseProprio, Delphiscal.Icms.Valor, Delphiscal.Icms.Valor.ST, Delphiscal.Icms70.Intf, Delphiscal.Icms.BaseST; - -type - TIcms70 = class(TInterfacedObject, IIcms70) - private - FBaseIcmsProprio: TBaseIcmsProprio; - FIcmsProprio: TValorIcms; - FBaseIcmsST: TBaseIcmsST; - FIcmsST: TValorIcmsST; - function ValorBaseReduzidaIcmsProprio: Double; - function ValorIcmsProprio: Double; - function ValorBaseIcmsST: Double; - function ValorIcmsST: Double; - function ValorIcmsDesonerado: Double; - function ValorIcmsSTDesonerado(const AValorIcmsStNormal: Double): Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; - const AValorIpi: Double = 0): IIcms70; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIcms70.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva: Double; const APercentualReducaoST: Double = 0; const AValorIpi: Double = 0); -begin - FBaseIcmsProprio := TBaseIcmsProprio.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - APercentualReducao); - FIcmsProprio := TValorIcms.Create(FBaseIcmsProprio, AAliquotaIcms); - FBaseIcmsST := TBaseIcmsST.Create(FBaseIcmsProprio, AMva, APercentualReducaoST); - FIcmsST := TValorIcmsST.Create(FBaseIcmsST, AAliquotaIcmsST, FIcmsProprio); -end; - -destructor TIcms70.Destroy; -begin - FIcmsST.Free; - FBaseIcmsST.Free; - FIcmsProprio.Free; - FBaseIcmsProprio.Free; - inherited; -end; - -class function TIcms70.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi: Double): IIcms70; -begin - Result := TIcms70.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaIcms, - APercentualReducao, AAliquotaIcmsST, AMva, APercentualReducaoST, AValorIpi); -end; - -function TIcms70.ValorBaseIcmsST: Double; -begin - Result := FBaseIcmsST.CalcularBaseIcmsST; -end; - -function TIcms70.ValorBaseReduzidaIcmsProprio: Double; -begin - Result := FBaseIcmsProprio.CalcularBaseReduzida; -end; - -function TIcms70.ValorIcmsDesonerado: Double; -var - LValorIcmsNormal: Double; -begin - LValorIcmsNormal := FIcmsProprio.CalcularValorNormalIcms; - Result := RoundABNT(LValorIcmsNormal - FIcmsProprio.CalcularValorReduzidoIcms, 2); -end; - -function TIcms70.ValorIcmsProprio: Double; -begin - Result := RoundABNT(FIcmsProprio.GetValorIcms, 2); -end; - -function TIcms70.ValorIcmsST: Double; -begin - Result := RoundABNT(FIcmsST.CalcularValorIcmsST, 2); -end; - -function TIcms70.ValorIcmsSTDesonerado(const AValorIcmsStNormal: Double): Double; -begin - Result := RoundABNT(AValorIcmsStNormal - FIcmsST.CalcularValorIcmsST, 2); -end; - -end. diff --git a/src/Delphiscal.Ipi.Base.pas b/src/Delphiscal.Ipi.Base.pas deleted file mode 100644 index e6e41bb..0000000 --- a/src/Delphiscal.Ipi.Base.pas +++ /dev/null @@ -1,34 +0,0 @@ -unit Delphiscal.Ipi.Base; - -interface - -type - TBaseIpi = class - private - FValorProduto: Double; - FValorfrete: Double; - FValorSeguro: Double; - FDespesasAcessorias: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias: Double); - function CalcularBaseIpi: Double; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TBaseIpi.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias: Double); -begin - FValorProduto := AValorProduto; - FValorfrete := AValorFrete; - FValorSeguro := AValorSeguro; - FDespesasAcessorias := ADespesasAcessorias; -end; - -function TBaseIpi.CalcularBaseIpi: Double; -begin - Result := RoundABNT((FValorProduto + FValorfrete + FValorSeguro + FDespesasAcessorias), 2); -end; - -end. diff --git a/src/Delphiscal.Ipi50AdValorem.Intf.pas b/src/Delphiscal.Ipi50AdValorem.Intf.pas deleted file mode 100644 index 6cdcf52..0000000 --- a/src/Delphiscal.Ipi50AdValorem.Intf.pas +++ /dev/null @@ -1,14 +0,0 @@ -unit Delphiscal.Ipi50AdValorem.Intf; - -interface - -type - IIpi50AdValorem = interface - ['{76DDBDAB-3DEF-40D6-BC75-95E2C9A73AC4}'] - function BaseIpi: Double; - function ValorIpi: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Ipi50AdValorem.pas b/src/Delphiscal.Ipi50AdValorem.pas deleted file mode 100644 index 5c40861..0000000 --- a/src/Delphiscal.Ipi50AdValorem.pas +++ /dev/null @@ -1,51 +0,0 @@ -unit Delphiscal.Ipi50AdValorem; - -interface - -uses Delphiscal.Ipi.Base, Delphiscal.Ipi50AdValorem.Intf; - -type - TIpi50AdValorem = class(TInterfacedObject, IIpi50AdValorem) - private - FBaseIpi: TBaseIpi; - FAliquotaIpi: Double; - function BaseIpi: Double; - function ValorIpi: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AAliquotaIpi: Double); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AAliquotaIpi: Double): IIpi50AdValorem; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIpi50AdValorem.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AAliquotaIpi: Double); -begin - FBaseIpi := TBaseIpi.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias); - FAliquotaIpi := AAliquotaIpi; -end; - -function TIpi50AdValorem.BaseIpi: Double; -begin - Result := FBaseIpi.CalcularBaseIpi; -end; - -destructor TIpi50AdValorem.Destroy; -begin - FBaseIpi.Free; - inherited; -end; - -class function TIpi50AdValorem.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AAliquotaIpi: Double): IIpi50AdValorem; -begin - Result := TIpi50AdValorem.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AAliquotaIpi); -end; - -function TIpi50AdValorem.ValorIpi: Double; -begin - Result := RoundABNT(BaseIpi * (FAliquotaIpi / 100), 2); -end; - -end. diff --git a/src/Delphiscal.Ipi50Especifico.Intf.pas b/src/Delphiscal.Ipi50Especifico.Intf.pas deleted file mode 100644 index bcb9ba7..0000000 --- a/src/Delphiscal.Ipi50Especifico.Intf.pas +++ /dev/null @@ -1,15 +0,0 @@ -unit Delphiscal.Ipi50Especifico.Intf; - -interface - -type - IIpi50Especifico = interface - ['{8303D85A-F87E-41E2-B31A-3AA54870FCB7}'] - function ValorIpi: Double; - function QuantidadeTributada(const AValue: Double): IIpi50Especifico; - function ValorPorUnidadeTributada(const AValue: Double): IIpi50Especifico; - end; - -implementation - -end. diff --git a/src/Delphiscal.Ipi50Especifico.pas b/src/Delphiscal.Ipi50Especifico.pas deleted file mode 100644 index ea9f5f2..0000000 --- a/src/Delphiscal.Ipi50Especifico.pas +++ /dev/null @@ -1,58 +0,0 @@ -unit Delphiscal.Ipi50Especifico; - -interface - -uses Delphiscal.Ipi50Especifico.Intf; - -type - TIpi50Especifico = class(TInterfacedObject, IIpi50Especifico) - private - FQuantidadeTributada: Double; - FValorUnidadeTributada: Double; - function ValorIpi: Double; - function QuantidadeTributada(const AValue: Double): IIpi50Especifico; - function ValorPorUnidadeTributada(const AValue: Double): IIpi50Especifico; - public - constructor Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); overload; - class function New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): IIpi50Especifico; overload; - class function New: IIpi50Especifico; overload; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TIpi50Especifico.Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); -begin - FQuantidadeTributada := AQuantidadeTributada; - FValorUnidadeTributada := AValorPorUnidadeTributada; -end; - -class function TIpi50Especifico.New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): IIpi50Especifico; -begin - Result := TIpi50Especifico.Create(AQuantidadeTributada, AValorPorUnidadeTributada); -end; - -class function TIpi50Especifico.New: IIpi50Especifico; -begin - Result := TIpi50Especifico.Create; -end; - -function TIpi50Especifico.ValorIpi: Double; -begin - Result := RoundABNT((FQuantidadeTributada * FValorUnidadeTributada), 2); -end; - -function TIpi50Especifico.QuantidadeTributada(const AValue: Double): IIpi50Especifico; -begin - FQuantidadeTributada := AValue; - Result := Self; -end; - -function TIpi50Especifico.ValorPorUnidadeTributada(const AValue: Double): IIpi50Especifico; -begin - FValorUnidadeTributada := AValue; - Result := Self; -end; - -end. diff --git a/src/Delphiscal.Pis.Base.pas b/src/Delphiscal.Pis.Base.pas deleted file mode 100644 index 8993cee..0000000 --- a/src/Delphiscal.Pis.Base.pas +++ /dev/null @@ -1,38 +0,0 @@ -unit Delphiscal.Pis.Base; - -interface - -type - TBasePis = class - private - FValorProduto: Currency; - FValorfrete: Currency; - FValorSeguro: Currency; - FDespesasAcessorias: Currency; - FValorDesconto: Currency; - FValorIcmsProprio: Currency; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Currency; const AValorIcmsProprio: Currency = 0); - function CalcularBasePis: Currency; - end; - -implementation - -uses acbrutil.math; - -function TBasePis.CalcularBasePis: Currency; -begin - Result := RoundABNT((FValorProduto + FValorfrete + FValorSeguro + FDespesasAcessorias - FValorDesconto) - FValorIcmsProprio, 2); -end; - -constructor TBasePis.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto: Currency; const AValorIcmsProprio: Currency = 0); -begin - FValorProduto := AValorProduto; - FValorfrete := AValorFrete; - FValorSeguro := AValorSeguro; - FDespesasAcessorias := ADespesasAcessorias; - FValorDesconto := AValorDesconto; - FValorIcmsProprio := AValorIcmsProprio; -end; - -end. diff --git a/src/Delphiscal.Pis01_02.Intf.pas b/src/Delphiscal.Pis01_02.Intf.pas deleted file mode 100644 index cdbba77..0000000 --- a/src/Delphiscal.Pis01_02.Intf.pas +++ /dev/null @@ -1,14 +0,0 @@ -unit Delphiscal.Pis01_02.Intf; - -interface - -type - IPis01_02 = interface - ['{A5FBE3EC-9083-49A1-A263-529E9967DB0B}'] - function BasePis: Double; - function ValorPis: Double; - end; - -implementation - -end. diff --git a/src/Delphiscal.Pis01_02.pas b/src/Delphiscal.Pis01_02.pas deleted file mode 100644 index 07539d9..0000000 --- a/src/Delphiscal.Pis01_02.pas +++ /dev/null @@ -1,53 +0,0 @@ -unit Delphiscal.Pis01_02; - -interface - -uses Delphiscal.Pis.Base, Delphiscal.Pis01_02.Intf; - -type - TPis01_02 = class(TInterfacedObject, IPis01_02) - private - FBasePis: TBasePis; - FAliquotaPis: Double; - function BasePis: Double; - function ValorPis: Double; - public - constructor Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaPis: Double); - class function New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaPis: Double): IPis01_02; - destructor Destroy; override; - end; - -implementation - -uses Delphiscal.Utils; - -function TPis01_02.BasePis: Double; -begin - Result := FBasePis.CalcularBasePis; -end; - -constructor TPis01_02.Create(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaPis: Double); -begin - FBasePis := TBasePis.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto); - FAliquotaPis := AAliquotaPis; -end; - -destructor TPis01_02.Destroy; -begin - FBasePis.Free; - inherited; -end; - -class function TPis01_02.New(const AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, - AAliquotaPis: Double): IPis01_02; -begin - Result := TPis01_02.Create(AValorProduto, AValorFrete, AValorSeguro, ADespesasAcessorias, AValorDesconto, AAliquotaPis); -end; - -function TPis01_02.ValorPis: Double; -begin - Result := RoundABNT(BasePis * (FAliquotaPis / 100), 2); -end; - -end. diff --git a/src/Delphiscal.Pis03.Intf.pas b/src/Delphiscal.Pis03.Intf.pas deleted file mode 100644 index f4e6c32..0000000 --- a/src/Delphiscal.Pis03.Intf.pas +++ /dev/null @@ -1,15 +0,0 @@ -unit Delphiscal.Pis03.Intf; - -interface - -type - IPis03 = interface - [ '{1C5C8D63-9BDF-4813-B1E0-16278E459F57}' ] - function ValorPis: Double; - function QuantidadeTributada(const AValue: Double): IPis03; - function ValorPorUnidadeTributada(const AValue: Double): IPis03; - end; - -implementation - -end. diff --git a/src/Delphiscal.Pis03.pas b/src/Delphiscal.Pis03.pas deleted file mode 100644 index a474a19..0000000 --- a/src/Delphiscal.Pis03.pas +++ /dev/null @@ -1,58 +0,0 @@ -unit Delphiscal.Pis03; - -interface - -uses Delphiscal.Pis03.Intf; - -type - TPis03 = class(TInterfacedObject, IPis03) - private - FQuantidadeTributada: Double; - FValorUnidadeTributada: Double; - function ValorPis: Double; - function QuantidadeTributada(const AValue: Double): IPis03; - function ValorPorUnidadeTributada(const AValue: Double): IPis03; - public - constructor Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); overload; - class function New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): IPis03; overload; - class function New: IPis03; overload; - end; - -implementation - -uses Delphiscal.Utils; - -constructor TPis03.Create(const AQuantidadeTributada, AValorPorUnidadeTributada: Double); -begin - FQuantidadeTributada := AQuantidadeTributada; - FValorUnidadeTributada := AValorPorUnidadeTributada; -end; - -class function TPis03.New(const AQuantidadeTributada, AValorPorUnidadeTributada: Double): IPis03; -begin - Result := TPis03.Create(AQuantidadeTributada, AValorPorUnidadeTributada); -end; - -class function TPis03.New: IPis03; -begin - Result := TPis03.Create; -end; - -function TPis03.ValorPis: Double; -begin - Result := RoundABNT((FQuantidadeTributada * FValorUnidadeTributada), 2); -end; - -function TPis03.QuantidadeTributada(const AValue: Double): IPis03; -begin - FQuantidadeTributada := AValue; - Result := Self; -end; - -function TPis03.ValorPorUnidadeTributada(const AValue: Double): IPis03; -begin - FValorUnidadeTributada := AValue; - Result := Self; -end; - -end. From 0221610bcbe47ad3c6ec95161def0febc12c687c Mon Sep 17 00:00:00 2001 From: Paulo Date: Wed, 15 Feb 2023 15:14:30 -0300 Subject: [PATCH 4/5] Alterado campo quantidade para calculo de valor --- samples/delphi/src/Samples.Delphi.Main.dfm | 148 ++---------------- samples/delphi/src/Samples.Delphi.Main.pas | 15 -- .../DelphiFiscal.Calculos.Interfaces.pas | 2 + src/Calculos/DelphiFiscal.Calculos.pas | 16 +- 4 files changed, 31 insertions(+), 150 deletions(-) diff --git a/samples/delphi/src/Samples.Delphi.Main.dfm b/samples/delphi/src/Samples.Delphi.Main.dfm index 7c70acd..12b17e0 100644 --- a/samples/delphi/src/Samples.Delphi.Main.dfm +++ b/samples/delphi/src/Samples.Delphi.Main.dfm @@ -6666,7 +6666,7 @@ object FrmMain: TFrmMain Top = 153 Width = 1037 Height = 433 - ActivePage = TabSheet7 + ActivePage = TabSheet1 Align = alClient TabOrder = 1 object TabSheet1: TTabSheet @@ -6790,7 +6790,7 @@ object FrmMain: TFrmMain Width = 241 Height = 289 Caption = 'Icms00' - TabOrder = 11 + TabOrder = 8 object Label7: TLabel Left = 16 Top = 37 @@ -6826,7 +6826,7 @@ object FrmMain: TFrmMain Width = 241 Height = 289 Caption = 'Icms20' - TabOrder = 12 + TabOrder = 9 object lbVICMS20: TLabel Left = 168 Top = 125 @@ -6876,7 +6876,7 @@ object FrmMain: TFrmMain Width = 241 Height = 286 Caption = 'Icms51' - TabOrder = 13 + TabOrder = 10 object Label10: TLabel Left = 16 Top = 34 @@ -6934,30 +6934,6 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIcms00: TButton - Left = 256 - Top = 324 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 00' - TabOrder = 8 - end - object btIcms20: TButton - Left = 503 - Top = 324 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 20' - TabOrder = 9 - end - object btIcms51: TButton - Left = 750 - Top = 324 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 51' - TabOrder = 10 - end object edAliqIcms: TEdit Left = 145 Top = 226 @@ -6995,7 +6971,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 14 + TabOrder = 11 Text = '135,00' end end @@ -7115,21 +7091,13 @@ object FrmMain: TFrmMain Caption = 'Valor Icms Desonerado (vICMSDeson):' end end - object btIcms70: TButton - Left = 758 - Top = 364 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 70' - TabOrder = 1 - end object GroupBox5: TGroupBox Left = 511 Top = 31 Width = 241 Height = 327 Caption = 'Icms30' - TabOrder = 2 + TabOrder = 1 object Label27: TLabel Left = 9 Top = 32 @@ -7173,21 +7141,13 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIcms30: TButton - Left = 511 - Top = 364 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 30' - TabOrder = 3 - end object GroupBox6: TGroupBox Left = 264 Top = 31 Width = 241 Height = 327 Caption = 'Icms10' - TabOrder = 4 + TabOrder = 2 object Label33: TLabel Left = 9 Top = 32 @@ -7259,14 +7219,6 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIcms10: TButton - Left = 264 - Top = 364 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 10' - TabOrder = 5 - end object edAliqST: TEdit Left = 145 Top = 34 @@ -7274,7 +7226,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 6 + TabOrder = 3 Text = '18,00' end object edPercRedST: TEdit @@ -7284,7 +7236,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 7 + TabOrder = 4 Text = '10,00' end object edMVA: TEdit @@ -7294,7 +7246,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 8 + TabOrder = 5 Text = '40,65' end end @@ -7354,21 +7306,13 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIcms101: TButton - Left = 240 - Top = 364 - Width = 185 - Height = 39 - Caption = 'Calcular CSOSN 101' - TabOrder = 2 - end object GroupBox8: TGroupBox Left = 455 Top = 33 Width = 241 Height = 324 Caption = 'Csosn201' - TabOrder = 3 + TabOrder = 2 object lbVBCST201: TLabel Left = 169 Top = 167 @@ -7426,21 +7370,13 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIcms201: TButton - Left = 455 - Top = 363 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 201' - TabOrder = 4 - end object GroupBox9: TGroupBox Left = 711 Top = 33 Width = 241 Height = 324 Caption = 'Csosn 202 e 203' - TabOrder = 5 + TabOrder = 3 object lbVBCST202: TLabel Left = 177 Top = 48 @@ -7470,14 +7406,6 @@ object FrmMain: TFrmMain Caption = 'Valor Icms ST (vICMSST):' end end - object btIcms202_203: TButton - Left = 711 - Top = 363 - Width = 241 - Height = 39 - Caption = 'Calcular ICMS 202 e 203' - TabOrder = 6 - end end object TabSheet5: TTabSheet Caption = 'IPI' @@ -7571,22 +7499,6 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btIpi50AdValorem: TButton - Left = 236 - Top = 363 - Width = 185 - Height = 39 - Caption = 'Calcular IPI 50 AdValorem' - TabOrder = 3 - end - object btIpi50AliqEspecifica: TButton - Left = 451 - Top = 363 - Width = 241 - Height = 39 - Caption = 'Calcular IPI 50 Aliq. Espec'#237'fica' - TabOrder = 4 - end object edValorIpiUn: TEdit Left = 141 Top = 63 @@ -7594,7 +7506,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 5 + TabOrder = 3 Text = '0,764' end object edQtdeIpiTributada: TEdit @@ -7604,7 +7516,7 @@ object FrmMain: TFrmMain Height = 23 BiDiMode = bdRightToLeft ParentBiDiMode = False - TabOrder = 6 + TabOrder = 4 Text = '15,00' end end @@ -7720,22 +7632,6 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btPis0102: TButton - Left = 244 - Top = 361 - Width = 185 - Height = 39 - Caption = 'Calcular PIS 01 ou 02' - TabOrder = 5 - end - object btPis03: TButton - Left = 459 - Top = 361 - Width = 241 - Height = 39 - Caption = 'Calcular PIS 03' - TabOrder = 6 - end end object TabSheet7: TTabSheet Caption = 'COFINS' @@ -7849,22 +7745,6 @@ object FrmMain: TFrmMain Caption = 'R$ 0,00' end end - object btCofins0102: TButton - Left = 252 - Top = 365 - Width = 185 - Height = 39 - Caption = 'Calcular COFINS 01 ou 02' - TabOrder = 5 - end - object btCofins03: TButton - Left = 467 - Top = 365 - Width = 241 - Height = 39 - Caption = 'Calcular COFINS 03' - TabOrder = 6 - end end end end diff --git a/samples/delphi/src/Samples.Delphi.Main.pas b/samples/delphi/src/Samples.Delphi.Main.pas index 37d5ac8..033b68e 100644 --- a/samples/delphi/src/Samples.Delphi.Main.pas +++ b/samples/delphi/src/Samples.Delphi.Main.pas @@ -56,9 +56,6 @@ TFrmMain = class(TForm) lbVICMSDIF: TLabel; Label19: TLabel; lbVICMS51: TLabel; - btIcms00: TButton; - btIcms20: TButton; - btIcms51: TButton; edAliqIcms: TEdit; edReducao: TEdit; edDiferimento: TEdit; @@ -80,7 +77,6 @@ TFrmMain = class(TForm) Label25: TLabel; Label46: TLabel; Label48: TLabel; - btIcms70: TButton; GroupBox5: TGroupBox; Label27: TLabel; lbVBCST30: TLabel; @@ -88,7 +84,6 @@ TFrmMain = class(TForm) lbVICMSST30: TLabel; Label31: TLabel; lbVICMSSTDeson30: TLabel; - btIcms30: TButton; GroupBox6: TGroupBox; Label33: TLabel; Label34: TLabel; @@ -100,7 +95,6 @@ TFrmMain = class(TForm) lbVICMSST10: TLabel; Label44: TLabel; lbVICMSSTDeson10: TLabel; - btIcms10: TButton; edAliqST: TEdit; edPercRedST: TEdit; edMVA: TEdit; @@ -115,13 +109,11 @@ TFrmMain = class(TForm) lbPCredSN101: TLabel; Label26: TLabel; lbVcredSN101: TLabel; - btIcms101: TButton; GroupBox8: TGroupBox; lbVBCST201: TLabel; lbVICMSST201: TLabel; Label45: TLabel; Label47: TLabel; - btIcms201: TButton; Label24: TLabel; lbPCredSN201: TLabel; Label30: TLabel; @@ -131,7 +123,6 @@ TFrmMain = class(TForm) lbVICMSST202: TLabel; Label35: TLabel; Label36: TLabel; - btIcms202_203: TButton; Label28: TLabel; edAliqIpi: TEdit; GroupBox10: TGroupBox; @@ -142,8 +133,6 @@ TFrmMain = class(TForm) GroupBox11: TGroupBox; Label54: TLabel; lbVipi50Especifico: TLabel; - btIpi50AdValorem: TButton; - btIpi50AliqEspecifica: TButton; Label42: TLabel; edValorIpiUn: TEdit; Label49: TLabel; @@ -162,8 +151,6 @@ TFrmMain = class(TForm) GroupBox13: TGroupBox; Label58: TLabel; lbVPIS03: TLabel; - btPis0102: TButton; - btPis03: TButton; Label55: TLabel; edAliqCofins: TEdit; Label57: TLabel; @@ -178,8 +165,6 @@ TFrmMain = class(TForm) GroupBox15: TGroupBox; Label64: TLabel; lbVCOFINS03: TLabel; - btCofins0102: TButton; - btCofins03: TButton; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); diff --git a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas index a02ada5..21f6c81 100644 --- a/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas +++ b/src/Calculos/DelphiFiscal.Calculos.Interfaces.pas @@ -39,6 +39,8 @@ interface function ValorDespesasAcessorias : double; overload; function ValorDescontos(aValue : double) : iCalculo; overload; function ValorDescontos : double; overload; + function Quantidade(aValue : double) : iCalculo; overload; + function Quantidade : double; overload; function ST : iST; function ICMS : iICMS; function IPI : iIPI; diff --git a/src/Calculos/DelphiFiscal.Calculos.pas b/src/Calculos/DelphiFiscal.Calculos.pas index b8a478b..6a71de0 100644 --- a/src/Calculos/DelphiFiscal.Calculos.pas +++ b/src/Calculos/DelphiFiscal.Calculos.pas @@ -13,6 +13,7 @@ TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) FValorSeguro : double; FValorDespesasAcessorias : double; FValorDesconto : double; + FQuantidade : double; FICSM : iICMS; FST : iST; FIPI : iIPI; @@ -32,6 +33,8 @@ TDelphiFiscalCalculos = class(TInterfacedObject, iCalculo) function ValorDespesasAcessorias : double; overload; function ValorDescontos(aValue : double) : iCalculo; overload; function ValorDescontos : double; overload; + function Quantidade(aValue : double) : iCalculo; overload; + function Quantidade : double; overload; function ST : iST; function IPI : iIPI; function PIS : iPIS; @@ -97,6 +100,17 @@ function TDelphiFiscalCalculos.PIS: iPIS; Result:= FPIS; end; +function TDelphiFiscalCalculos.Quantidade: double; +begin + Result:= FQuantidade; +end; + +function TDelphiFiscalCalculos.Quantidade(aValue: double): iCalculo; +begin + Result:= Self; + FQuantidade:= aValue; +end; + function TDelphiFiscalCalculos.ST: iST; begin if not Assigned(FST) then @@ -141,7 +155,7 @@ function TDelphiFiscalCalculos.ValorFrete: double; function TDelphiFiscalCalculos.ValorProduto: double; begin - Result:= FValorProduto; + Result:= FValorProduto * FQuantidade; end; function TDelphiFiscalCalculos.ValorProduto(aValue: double): iCalculo; From 3472743e09a74a65ab69ad8afcdd31f26978ba7a Mon Sep 17 00:00:00 2001 From: "MADALOZZO\\pmada" Date: Mon, 26 Feb 2024 11:55:04 -0300 Subject: [PATCH 5/5] =?UTF-8?q?Altera=C3=A7=C3=A3o=20nas=20interfaces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- samples/delphi/Delphiscal.dpr | 16 +- samples/delphi/Delphiscal.dproj | 14 +- samples/delphi/src/Samples.Delphi.Main.dfm | 2 +- samples/delphi/src/Samples.Delphi.Main.pas | 128 +++++++------ ...elphiFiscal.Calculos.COFINS.Interfaces.pas | 18 ++ ...hiFiscal.Calculos.COFINS.Interfacespas.pas | 7 + .../COFINS/DelphiFiscal.Calculos.COFINS.pas | 17 +- .../CST/DelphiFiscal.CST.Interfaces.pas | 178 ++++++++++++++++++ src/Calculos/CST/DelphiFiscal.CST.pas | 55 +++--- .../DelphiFiscal.Impostos.CST.COFINS01.pas | 27 +-- .../DelphiFiscal.Impostos.CST.COFINS02.pas | 27 +-- .../DelphiFiscal.Impostos.CST.COFINS03.pas | 27 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS00.pas | 22 ++- .../CST/DelphiFiscal.Impostos.CST.ICMS10.pas | 31 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS101.pas | 22 ++- .../CST/DelphiFiscal.Impostos.CST.ICMS20.pas | 26 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS201.pas | 29 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS202.pas | 25 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS203.pas | 25 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS30.pas | 27 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS51.pas | 24 +-- .../CST/DelphiFiscal.Impostos.CST.ICMS70.pas | 30 +-- .../CST/DelphiFiscal.Impostos.CST.IPI50.pas | 26 +-- .../CST/DelphiFiscal.Impostos.CST.PIS01.pas | 28 +-- .../CST/DelphiFiscal.Impostos.CST.PIS02.pas | 27 +-- .../CST/DelphiFiscal.Impostos.CST.PIS03.pas | 27 +-- src/Calculos/DelphiFiscal.Base.Interfaces.pas | 23 +++ src/Calculos/DelphiFiscal.Base.pas | 132 +++++++++++++ .../DelphiFiscal.Calculos.ICMS.interfaces.pas | 28 +++ .../ICMS/DelphiFiscal.Calculos.ICMS.pas | 47 ++--- .../DelphiFiscal.Calculos.IPI.Interfaces.pas | 18 ++ .../IPI/DelphiFiscal.Calculos.IPI.pas | 17 +- .../DelphiFiscal.Calculos.PIS.Intefaces.pas | 18 ++ .../PIS/DelphiFiscal.Calculos.PIS.pas | 18 +- .../DelphiFiscal.Calculos.ST.Interfaces.pas | 20 ++ src/Calculos/ST/DelphiFiscal.Calculos.ST.pas | 17 +- .../DelphiFiscal.Controller.Interfaces.pas | 28 +++ src/Controller/DelphiFiscal.Controller.pas | 123 ++++++++++++ src/Util/Delphiscal.Utils.pas | 74 ++++++++ 39 files changed, 1095 insertions(+), 353 deletions(-) create mode 100644 src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfaces.pas create mode 100644 src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfacespas.pas create mode 100644 src/Calculos/CST/DelphiFiscal.CST.Interfaces.pas create mode 100644 src/Calculos/DelphiFiscal.Base.Interfaces.pas create mode 100644 src/Calculos/DelphiFiscal.Base.pas create mode 100644 src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.interfaces.pas create mode 100644 src/Calculos/IPI/DelphiFiscal.Calculos.IPI.Interfaces.pas create mode 100644 src/Calculos/PIS/DelphiFiscal.Calculos.PIS.Intefaces.pas create mode 100644 src/Calculos/ST/DelphiFiscal.Calculos.ST.Interfaces.pas create mode 100644 src/Controller/DelphiFiscal.Controller.Interfaces.pas create mode 100644 src/Controller/DelphiFiscal.Controller.pas create mode 100644 src/Util/Delphiscal.Utils.pas diff --git a/samples/delphi/Delphiscal.dpr b/samples/delphi/Delphiscal.dpr index 7bae744..9e9f260 100644 --- a/samples/delphi/Delphiscal.dpr +++ b/samples/delphi/Delphiscal.dpr @@ -2,7 +2,7 @@ program Delphiscal; uses Vcl.Forms, Samples.Delphi.Main in 'src\Samples.Delphi.Main.pas' {FrmMain}, - Delphiscal.Utils in '..\..\src\Calculos\Util\Delphiscal.Utils.pas', + Delphiscal.Utils in '..\..\src\Util\Delphiscal.Utils.pas', DelphiFiscal.Impostos.CST.ICMS00 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS00.pas', DelphiFiscal.Impostos.CST.ICMS20 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS20.pas', DelphiFiscal.Impostos.CST.ICMS51 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS51.pas', @@ -11,9 +11,9 @@ uses DelphiFiscal.Impostos.CST.ICMS70 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS70.pas', DelphiFiscal.Calculos.ST in '..\..\src\Calculos\ST\DelphiFiscal.Calculos.ST.pas', DelphiFiscal.Calculos.ICMS in '..\..\src\Calculos\ICMS\DelphiFiscal.Calculos.ICMS.pas', - DelphiFiscal.Calculos.Interfaces in '..\..\src\Calculos\DelphiFiscal.Calculos.Interfaces.pas', + DelphiFiscal.Base.Interfaces in '..\..\src\Calculos\DelphiFiscal.Base.Interfaces.pas', DelphiFiscal.CST in '..\..\src\Calculos\CST\DelphiFiscal.CST.pas', - DelphiFiscal.Calculos in '..\..\src\Calculos\DelphiFiscal.Calculos.pas', + DelphiFiscal.Base in '..\..\src\Calculos\DelphiFiscal.Base.pas', DelphiFiscal.Impostos.CST.ICMS101 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS101.pas', DelphiFiscal.Impostos.CST.ICMS201 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS201.pas', DelphiFiscal.Impostos.CST.ICMS202 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.ICMS202.pas', @@ -27,7 +27,15 @@ uses DelphiFiscal.Impostos.CST.COFINS01 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS01.pas', DelphiFiscal.Calculos.COFINS in '..\..\src\Calculos\COFINS\DelphiFiscal.Calculos.COFINS.pas', DelphiFiscal.Impostos.CST.COFINS02 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS02.pas', - DelphiFiscal.Impostos.CST.COFINS03 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS03.pas'; + DelphiFiscal.Impostos.CST.COFINS03 in '..\..\src\Calculos\CST\DelphiFiscal.Impostos.CST.COFINS03.pas', + DelphiFiscal.Controller.Interfaces in '..\..\src\Controller\DelphiFiscal.Controller.Interfaces.pas', + DelphiFiscal.Calculos.ST.Interfaces in '..\..\src\Calculos\ST\DelphiFiscal.Calculos.ST.Interfaces.pas', + DelphiFiscal.Controller in '..\..\src\Controller\DelphiFiscal.Controller.pas', + DelphiFiscal.Calculos.PIS.Intefaces in '..\..\src\Calculos\PIS\DelphiFiscal.Calculos.PIS.Intefaces.pas', + DelphiFiscal.Calculos.COFINS.Interfaces in '..\..\src\Calculos\COFINS\DelphiFiscal.Calculos.COFINS.Interfaces.pas', + DelphiFiscal.Calculos.IPI.Interfaces in '..\..\src\Calculos\IPI\DelphiFiscal.Calculos.IPI.Interfaces.pas', + DelphiFiscal.Calculos.ICMS.interfaces in '..\..\src\Calculos\ICMS\DelphiFiscal.Calculos.ICMS.interfaces.pas', + DelphiFiscal.CST.Interfaces in '..\..\src\Calculos\CST\DelphiFiscal.CST.Interfaces.pas'; {$R *.res} begin diff --git a/samples/delphi/Delphiscal.dproj b/samples/delphi/Delphiscal.dproj index b1462c2..7c0fef2 100644 --- a/samples/delphi/Delphiscal.dproj +++ b/samples/delphi/Delphiscal.dproj @@ -111,7 +111,7 @@
FrmMain
dfm
- + @@ -120,9 +120,9 @@ - + - + @@ -137,6 +137,14 @@ + + + + + + + + Base diff --git a/samples/delphi/src/Samples.Delphi.Main.dfm b/samples/delphi/src/Samples.Delphi.Main.dfm index 12b17e0..a210038 100644 --- a/samples/delphi/src/Samples.Delphi.Main.dfm +++ b/samples/delphi/src/Samples.Delphi.Main.dfm @@ -6666,7 +6666,7 @@ object FrmMain: TFrmMain Top = 153 Width = 1037 Height = 433 - ActivePage = TabSheet1 + ActivePage = TabSheet2 Align = alClient TabOrder = 1 object TabSheet1: TTabSheet diff --git a/samples/delphi/src/Samples.Delphi.Main.pas b/samples/delphi/src/Samples.Delphi.Main.pas index 033b68e..0dcf427 100644 --- a/samples/delphi/src/Samples.Delphi.Main.pas +++ b/samples/delphi/src/Samples.Delphi.Main.pas @@ -13,7 +13,7 @@ interface Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces; type TFrmMain = class(TForm) Panel1: TPanel; @@ -169,7 +169,7 @@ TFrmMain = class(TForm) procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private - FImpostos : iCalculo; + FImpostos : iController; end; var FrmMain: TFrmMain; @@ -177,103 +177,119 @@ implementation uses System.SysUtils, - DelphiFiscal.Calculos; + DelphiFiscal.Base, + DelphiFiscal.Controller; {$R *.dfm} procedure TFrmMain.Button1Click(Sender: TObject); begin + // Base de Calculos (Obrigatório) + FImpostos + .Base + .Quantidade(1) + .ValorProduto(strtofloatdef(edValorProduto.Text,0)) + .ValorFrete(strtofloatdef(edValorFrete.Text,0)) + .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) + .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) + .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)); + + // Calculo ICMS FImpostos - .ValorProduto(strtofloatdef(edValorProduto.Text,0)) - .ValorFrete(strtofloatdef(edValorFrete.Text,0)) - .ValorSeguro(strtofloatdef(edValorSeguro.Text,0)) - .ValorDespesasAcessorias(strtofloatdef(edValorDespesas.Text,0)) - .ValorDescontos(strtofloatdef(edValorDesconto.Text,0)) .ICMS .ValorIPI(strtofloatdef(edValorIpi.Text,0)) .PercentualReducao(strtofloatdef(edReducao.Text,0)) .PercentualDiferimento(strtofloatdef(edDiferimento.Text,0)) .AliquotaICMS(strtofloatdef(edAliqIcms.Text,0)) .PercentualCreditoICMSSN(strtofloatdef(edPercentualCreditoSN.Text,0)) - .ContemReducao(strtofloatdef(edReducao.Text,0) > 0) - .&End + .ContemReducao(strtofloatdef(edReducao.Text,0) > 0); + + // Calculo ST + FImpostos .ST .AliquotaICMSST(strtofloatdef(edAliqST.Text,0)) .PercentualMVA(strtofloatdef(edMVA.Text,0)) - .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)) - .&End + .PercentualReducaoBaseICMSST(strtofloatdef(edPercRedST.Text,0)); + + // Calculo IPI + FImpostos .IPI .AliquotaIPI(strtofloatdef(edAliqIpi.Text,0)) .ValorIPIPorUnidade(strtofloatdef(edValorIpiUn.Text,0)) - .QtdeIPITributada(strtofloatdef(edQtdeIpiTributada.Text,0)) - .&End + .QtdeIPITributada(strtofloatdef(edQtdeIpiTributada.Text,0)); + + // Calculo PIS + FImpostos .PIS .AliquotaPIS(strtofloatdef(edAliqPis.Text,0)) .ValorPISPorUnidade(strtofloatdef(edValorPisUn.Text,0)) - .QtdePISTributada(strtofloatdef(edQtdePisUn.Text,0)) - .&End + .QtdePISTributada(strtofloatdef(edQtdePisUn.Text,0)); + + // Calculo Cofins + FImpostos .COFINS .AliquotaCOFINS(strtofloatdef(edAliqCofins.Text,0)) .ValorCOFINSPorUnidade(strtofloatdef(edValorCofinsUn.Text,0)) - .QtdeCOFINSTributada(strtofloatdef(edQtdeCofinsUn.Text,0)) - .&End; + .QtdeCOFINSTributada(strtofloatdef(edQtdeCofinsUn.Text,0)); + + // Resultados lbVICMS00.Caption:= FImpostos.ICMS.ValorICMS.ToString; - lbVBC00.Caption := FImpostos.ICMS.CST.ICMS00.BaseICMSProprio.ToString; + lbVBC00.Caption := FImpostos.CST.ICMS00.BaseICMSProprio.ToString; - lbVICMS20.Caption:= FImpostos.ICMS.CST.ICMS20.ValorICMSProprio.ToString; - lbVBC20.Caption := FImpostos.ICMS.CST.ICMS20.BaseICMSProprio.ToString; - lbVICMSDESON20.Caption:= FImpostos.ICMS.CST.ICMS20.ValorICMSDesonerado.ToString; + lbVICMS20.Caption:= FImpostos.CST.ICMS20.ValorICMSProprio.ToString; + lbVBC20.Caption := FImpostos.CST.ICMS20.BaseICMSProprio.ToString; + lbVICMSDESON20.Caption:= FImpostos.CST.ICMS20.ValorICMSDesonerado.ToString; - lbVBC51.Caption:= FImpostos.ICMS.CST.ICMS51.BaseICMSProprio.ToString; - lbVICMS51.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSProprio.ToString; - lbVICMSOP.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSOperacao.ToString; - lbVICMSDIF.Caption:= FImpostos.ICMS.CST.ICMS51.ValorICMSDiferido.ToString; + lbVBC51.Caption:= FImpostos.CST.ICMS51.BaseICMSProprio.ToString; + lbVICMS51.Caption:= FImpostos.CST.ICMS51.ValorICMSProprio.ToString; + lbVICMSOP.Caption:= FImpostos.CST.ICMS51.ValorICMSOperacao.ToString; + lbVICMSDIF.Caption:= FImpostos.CST.ICMS51.ValorICMSDiferido.ToString; - lbVBC10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorBaseIcmsProprio.ToString; - lbVICMS10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsProprio.ToString; - lbVBCST10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorBaseIcmsST.ToString; - lbVICMSST10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsST.ToString; - lbVICMSSTDeson10.Caption:= FImpostos.ICMS.CST.ICMS10.ValorIcmsSTDesonerado.ToString; + lbVBC10.Caption:= FImpostos.CST.ICMS10.ValorBaseIcmsProprio.ToString; + lbVICMS10.Caption:= FImpostos.CST.ICMS10.ValorIcmsProprio.ToString; + lbVBCST10.Caption:= FImpostos.CST.ICMS10.ValorBaseIcmsST.ToString; + lbVICMSST10.Caption:= FImpostos.CST.ICMS10.ValorIcmsST.ToString; + lbVICMSSTDeson10.Caption:= FImpostos.CST.ICMS10.ValorIcmsSTDesonerado.ToString; - lbVBCST30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorBaseIcmsST.ToString; - lbVICMSST30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorIcmsST.ToString; - lbVICMSSTDeson30.Caption:= FImpostos.ICMS.CST.ICMS30.ValorIcmsDesonerado.ToString; + lbVBCST30.Caption:= FImpostos.CST.ICMS30.ValorBaseIcmsST.ToString; + lbVICMSST30.Caption:= FImpostos.CST.ICMS30.ValorIcmsST.ToString; + lbVICMSSTDeson30.Caption:= FImpostos.CST.ICMS30.ValorIcmsDesonerado.ToString; - lbVBC70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorBaseReduzidaIcmsProprio.ToString; - lbVICMS70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsProprio.ToString; - lbVICMSDeson70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsDesonerado.ToString; + lbVBC70.Caption:= FImpostos.CST.ICMS70.ValorBaseReduzidaIcmsProprio.ToString; + lbVICMS70.Caption:= FImpostos.CST.ICMS70.ValorIcmsProprio.ToString; + lbVICMSDeson70.Caption:= FImpostos.CST.ICMS70.ValorIcmsDesonerado.ToString; - lbVBCST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorBaseIcmsST.ToString; - lbVICMSST70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsST.ToString; - lbVICMSSTDeson70.Caption:= FImpostos.ICMS.CST.ICMS70.ValorIcmsSTDesonerado.ToString; + lbVBCST70.Caption:= FImpostos.CST.ICMS70.ValorBaseIcmsST.ToString; + lbVICMSST70.Caption:= FImpostos.CST.ICMS70.ValorIcmsST.ToString; + lbVICMSSTDeson70.Caption:= FImpostos.CST.ICMS70.ValorIcmsSTDesonerado.ToString; lbPCredSN101.Caption:= FImpostos.ICMS.PercentualCreditoICMSSN.ToString; - lbVcredSN101.Caption:= FImpostos.ICMS.CST.ICMS101.ValorCreditoSN.ToString; + lbVcredSN101.Caption:= FImpostos.CST.ICMS101.ValorCreditoSN.ToString; lbPCredSN201.Caption:= FImpostos.ICMS.PercentualCreditoICMSSN.ToString; - lbVCredSN201.Caption:= FImpostos.ICMS.CST.ICMS201.ValorCreditoSN.ToString; - lbVBCST201.Caption := FImpostos.ICMS.CST.ICMS201.ValorBaseIcmsST.ToString; - lbVICMSST201.Caption:= FImpostos.ICMS.CST.ICMS201.ValorIcmsST.ToString; + lbVCredSN201.Caption:= FImpostos.CST.ICMS201.ValorCreditoSN.ToString; + lbVBCST201.Caption := FImpostos.CST.ICMS201.ValorBaseIcmsST.ToString; + lbVICMSST201.Caption:= FImpostos.CST.ICMS201.ValorIcmsST.ToString; - lbVBCST202.Caption := FImpostos.ICMS.CST.ICMS202.ValorBaseIcmsST.ToString; - lbVICMSST202.Caption:= FImpostos.ICMS.CST.ICMS202.ValorIcmsST.ToString; + lbVBCST202.Caption := FImpostos.CST.ICMS202.ValorBaseIcmsST.ToString; + lbVICMSST202.Caption:= FImpostos.CST.ICMS202.ValorIcmsST.ToString; - lbvBCIpi50av.Caption:= FImpostos.ICMS.CST.IPI50.BaseIpi.ToString; - lbVIPI50av.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpi.ToString; - lbVipi50Especifico.Caption:= FImpostos.ICMS.CST.IPI50.ValorIpiEspecifico.ToString; + lbvBCIpi50av.Caption:= FImpostos.CST.IPI50.BaseIpi.ToString; + lbVIPI50av.Caption:= FImpostos.CST.IPI50.ValorIpi.ToString; + lbVipi50Especifico.Caption:= FImpostos.CST.IPI50.ValorIpiEspecifico.ToString; - lbVBCPIS01_02.Caption:= FImpostos.ICMS.CST.PIS01.BasePis.ToString; - lbVPIS01_02.Caption:= FImpostos.ICMS.CST.PIS01.ValorPis.ToString; - lbVPIS03.Caption:= FImpostos.ICMS.CST.PIS01.ValorPisEspecifico.ToString; + lbVBCPIS01_02.Caption:= FImpostos.CST.PIS01.BasePis.ToString; + lbVPIS01_02.Caption:= FImpostos.CST.PIS01.ValorPis.ToString; + lbVPIS03.Caption:= FImpostos.CST.PIS01.ValorPisEspecifico.ToString; - lbVBCCOFINS01_02.Caption:= FImpostos.ICMS.CST.COFINS01.BaseCofins.ToString; - lbVCOFINS01_02.Caption := FImpostos.ICMS.CST.COFINS01.ValorCofins.ToString; - lbVCOFINS03.Caption:= FImpostos.ICMS.CST.COFINS01.ValorCofinsEspecifico.ToString; + lbVBCCOFINS01_02.Caption:= FImpostos.CST.COFINS01.BaseCofins.ToString; + lbVCOFINS01_02.Caption := FImpostos.CST.COFINS01.ValorCofins.ToString; + lbVCOFINS03.Caption:= FImpostos.CST.COFINS01.ValorCofinsEspecifico.ToString; end; procedure TFrmMain.FormCreate(Sender: TObject); begin - FImpostos:= TDelphiFiscalCalculos.New; + FImpostos:= TController.New; end; end. diff --git a/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfaces.pas b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfaces.pas new file mode 100644 index 0000000..3e4b2bd --- /dev/null +++ b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfaces.pas @@ -0,0 +1,18 @@ +unit DelphiFiscal.Calculos.COFINS.Interfaces; + +interface + +type + iCOFINS = interface + ['{8FC6C2EA-4A1D-43AB-A55D-631E05C39145}'] + function AliquotaCOFINS(aValue : double) : iCOFINS; overload; + function AliquotaCOFINS : double; overload; + function ValorCOFINSPorUnidade(aValue : double) : iCOFINS; overload; + function ValorCOFINSPorUnidade : double; overload; + function QtdeCOFINSTributada(aValue : double) : iCOFINS; overload; + function QtdeCOFINSTributada : double; overload; + end; + +implementation + +end. diff --git a/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfacespas.pas b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfacespas.pas new file mode 100644 index 0000000..0e34f89 --- /dev/null +++ b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.Interfacespas.pas @@ -0,0 +1,7 @@ +unit DelphiFiscal.Calculos.COFINS.Interfacespas; + +interface + +implementation + +end. diff --git a/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas index 0d8c71b..051b329 100644 --- a/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas +++ b/src/Calculos/COFINS/DelphiFiscal.Calculos.COFINS.pas @@ -3,27 +3,28 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Calculos.COFINS.Interfaces, + DelphiFiscal.Controller.Interfaces; type TDelphiFiscalCOFINS = class(TInterfacedObject, iCOFINS) private [weak] - FParent : iCalculo; + FParent : iController; FAliquotaCOFIS : double; FValorIPIPorUnidade : double; FQtdeIPITributada : double; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iCOFINS; + class function New(Parent : iController) : iCOFINS; function AliquotaCOFINS(aValue : double) : iCOFINS; overload; function AliquotaCOFINS : double; overload; function ValorCOFINSPorUnidade(aValue : double) : iCOFINS; overload; function ValorCOFINSPorUnidade : double; overload; function QtdeCOFINSTributada(aValue : double) : iCOFINS; overload; function QtdeCOFINSTributada : double; overload; - function &End : iCalculo; + function &End : iController; end; implementation @@ -31,7 +32,7 @@ implementation uses Delphiscal.Utils; -function TDelphiFiscalCOFINS.&End: iCalculo; +function TDelphiFiscalCOFINS.&End: iController; begin Result:= FParent; end; @@ -47,7 +48,7 @@ function TDelphiFiscalCOFINS.AliquotaCOFINS: double; Result:= FAliquotaCOFIS; end; -constructor TDelphiFiscalCOFINS.create(Parent: iCalculo); +constructor TDelphiFiscalCOFINS.create(Parent: iController); begin FParent:= Parent; end; @@ -58,7 +59,7 @@ destructor TDelphiFiscalCOFINS.destroy; inherited; end; -class function TDelphiFiscalCOFINS.New(Parent: iCalculo): iCOFINS; +class function TDelphiFiscalCOFINS.New(Parent: iController): iCOFINS; begin Result:= Self.create(Parent); end; diff --git a/src/Calculos/CST/DelphiFiscal.CST.Interfaces.pas b/src/Calculos/CST/DelphiFiscal.CST.Interfaces.pas new file mode 100644 index 0000000..6b03c66 --- /dev/null +++ b/src/Calculos/CST/DelphiFiscal.CST.Interfaces.pas @@ -0,0 +1,178 @@ +unit DelphiFiscal.CST.Interfaces; + +interface + +type + iCST = interface; + iICMS00 = interface; + iICMS10 = interface; + iICMS20 = interface; + iICMS51 = interface; + iICMS30 = interface; + iICMS70 = interface; + iICMS101 = interface; + iICMS201 = interface; + iICMS202 = interface; + iICMS203 = interface; + iIPI50 = interface; + iPIS01 = interface; + iPIS02 = interface; + iPIS03 = interface; + iCOFINS01 = interface; + iCOFINS02 = interface; + iCOFINS03 = interface; + + iCST = interface + ['{1C99705A-9279-4E2D-923D-909F46F52C09}'] + function ICMS00 : iICMS00; + function ICMS10 : iICMS10; + function ICMS20 : iICMS20; + function ICMS30 : iICMS30; + function ICMS51 : iICMS51; + function ICMS70 : iICMS70; + function ICMS101 : iICMS101; + function ICMS201 : iICMS201; + function ICMS202 : iICMS202; + function ICMS203 : iICMS203; + function IPI50 : iIPI50; + function PIS01 : iPIS01; + function PIS02 : iPIS02; + function PIS03 : iPIS03; + function COFINS01 : iCOFINS01; + function COFINS02 : iCOFINS02; + function COFINS03 : iCOFINS03; + end; + + iICMS00 = interface + ['{D9FBD4DD-D640-4A7F-BFED-E60C921A357F}'] + function BaseICMSProprio : double; + function ValorICMSProprio : double; + end; + + iICMS10 = interface + ['{12C3E9A1-48C5-46B8-9422-25C120376564}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsSTDesonerado: Double; + end; + + iICMS20 = interface + ['{82A4F07F-0396-49C5-99E0-77765B7EE081}'] + function BaseICMSProprio : double; + function ValorICMSProprio : double; + function ValorICMSDesonerado : double; + function ValorICMSReduzido : double; + end; + + iICMS30 = interface + ['{27FD32AE-E2DA-4C37-93C7-C6BE65B4C8CB}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsDesonerado: Double; + end; + + iICMS51 = interface + ['{75826AA1-CB05-4819-BA39-AEA73886AA90}'] + function BaseICMSProprio : double; + function ValorICMSOperacao : double; + function ValorICMSDiferido : double; + function ValorICMSProprio : double; + end; + + iICMS70 = interface + ['{A5D9D047-AA83-4C56-9434-901F489A1EEB}'] + function ValorBaseReduzidaIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + function ValorIcmsDesonerado: Double; + function ValorIcmsSTDesonerado : Double; + end; + + iICMS101 = interface + ['{E94DE381-C6C3-4387-AAE8-F0B48B40CB46}'] + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + end; + + iICMS201 = interface + ['{BAD353D6-EF40-489D-B9C0-D95F3C4B701B}'] + function BaseCreditoSN: Double; + function ValorCreditoSN: Double; + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + end; + + iICMS202 = interface + ['{C54D7F22-F573-4E6E-A80F-71344F49FC29}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + end; + + iICMS203 = interface + ['{1D0F2F00-E93D-40CF-A0B9-E45744E65486}'] + function ValorBaseIcmsProprio: Double; + function ValorIcmsProprio: Double; + function ValorBaseIcmsST: Double; + function ValorIcmsST: Double; + end; + + iIPI50 = interface + ['{97A056A1-1778-48C8-85D3-BC5F6205FD3F}'] + function BaseIpi: Double; + function ValorIpi: Double; + function ValorIpiEspecifico: Double; + end; + + iPIS01 = interface + ['{9214FC95-C7D5-49E2-9218-AA55C237B9F5}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iPIS02 = interface + ['{75A2EBF0-EFE9-4070-B6F7-D39617241D88}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iPIS03 = interface + ['{3E365284-F553-47ED-817D-E15799CFDC02}'] + function BasePis: Double; + function ValorPis: Double; + function ValorPisEspecifico: Double; + end; + + iCOFINS01 = interface + ['{1902D2F2-2A8F-442D-9127-8294C96D89CD}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; + + iCOFINS02 = interface + ['{4A8EF1EA-C2AB-449E-BEFC-F95BDA10DC95}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; + + iCOFINS03 = interface + ['{C85A50D8-A8D6-4DC4-B120-9A7483AC95ED}'] + function BaseCofins: Double; + function ValorCofins: Double; + function ValorCofinsEspecifico: Double; + end; +implementation + +end. diff --git a/src/Calculos/CST/DelphiFiscal.CST.pas b/src/Calculos/CST/DelphiFiscal.CST.pas index 4602f40..b0f63cb 100644 --- a/src/Calculos/CST/DelphiFiscal.CST.pas +++ b/src/Calculos/CST/DelphiFiscal.CST.pas @@ -3,13 +3,15 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TDelphiFiscalCST = class(TInterfacedObject, iCST) private [weak] - FParent : iCalculo; + FParent : iController; FICMS00 : iICMS00; FICMS10 : iICMS10; FICMS20 : iICMS20; @@ -28,9 +30,9 @@ TDelphiFiscalCST = class(TInterfacedObject, iCST) FCOFINS02 : iCOFINS02; FCOFINS03 : iCOFINS03; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iCST; + class function New(Parent : iController) : iCST; function ICMS00 : iICMS00; function ICMS10 : iICMS10; function ICMS20 : iICMS20; @@ -48,7 +50,7 @@ TDelphiFiscalCST = class(TInterfacedObject, iCST) function COFINS01: iCOFINS01; function COFINS02: iCOFINS02; function COFINS03: iCOFINS03; - function &End : iCalculo; + function &End : iController; end; implementation @@ -69,11 +71,12 @@ implementation DelphiFiscal.Impostos.CST.PIS02, DelphiFiscal.Impostos.CST.PIS03, DelphiFiscal.Impostos.CST.COFINS01, - DelphiFiscal.Impostos.CST.COFINS02, DelphiFiscal.Impostos.CST.COFINS03; + DelphiFiscal.Impostos.CST.COFINS02, + DelphiFiscal.Impostos.CST.COFINS03; { TDelphiFiscalCST } -function TDelphiFiscalCST.&End: iCalculo; +function TDelphiFiscalCST.&End: iController; begin Result:= FParent; end; @@ -81,7 +84,7 @@ function TDelphiFiscalCST.&End: iCalculo; function TDelphiFiscalCST.ICMS00: iICMS00; begin if not Assigned(FICMS00) then - FICMS00:= TICMS00.New(self); + FICMS00:= TICMS00.New(FParent); Result:= FICMS00; end; @@ -89,7 +92,7 @@ function TDelphiFiscalCST.ICMS00: iICMS00; function TDelphiFiscalCST.ICMS10: iICMS10; begin if not Assigned(FICMS10) then - FICMS10:= TICMS10.New(self); + FICMS10:= TICMS10.New(FParent); Result:= FICMS10; end; @@ -97,7 +100,7 @@ function TDelphiFiscalCST.ICMS10: iICMS10; function TDelphiFiscalCST.ICMS101: iICMS101; begin if not Assigned(FICMS101) then - FICMS101:= TICMS101.New(self); + FICMS101:= TICMS101.New(FParent); Result:= FICMS101; end; @@ -105,7 +108,7 @@ function TDelphiFiscalCST.ICMS101: iICMS101; function TDelphiFiscalCST.ICMS20: iICMS20; begin if not Assigned(FICMS20) then - FICMS20:= TICMS20.New(self); + FICMS20:= TICMS20.New(FParent); Result:= FICMS20; end; @@ -113,7 +116,7 @@ function TDelphiFiscalCST.ICMS20: iICMS20; function TDelphiFiscalCST.ICMS201: iICMS201; begin if not Assigned(FICMS201) then - FICMS201:= TICMS201.New(self); + FICMS201:= TICMS201.New(FParent); Result:= FICMS201; end; @@ -121,7 +124,7 @@ function TDelphiFiscalCST.ICMS201: iICMS201; function TDelphiFiscalCST.ICMS202: iICMS202; begin if not Assigned(FICMS202) then - FICMS202:= TICMS202.New(self); + FICMS202:= TICMS202.New(FParent); Result:= FICMS202; end; @@ -129,7 +132,7 @@ function TDelphiFiscalCST.ICMS202: iICMS202; function TDelphiFiscalCST.ICMS203: iICMS203; begin if not Assigned(FICMS203) then - FICMS203:= TICMS203.New(self); + FICMS203:= TICMS203.New(FParent); Result:= FICMS203; end; @@ -137,7 +140,7 @@ function TDelphiFiscalCST.ICMS203: iICMS203; function TDelphiFiscalCST.ICMS30: iICMS30; begin if not Assigned(FICMS30) then - FICMS30:= TICMS30.New(self); + FICMS30:= TICMS30.New(FParent); Result:= FICMS30; end; @@ -145,7 +148,7 @@ function TDelphiFiscalCST.ICMS30: iICMS30; function TDelphiFiscalCST.ICMS51: iICMS51; begin if not Assigned(FICMS51) then - FICMS51:= TICMS51.New(self); + FICMS51:= TICMS51.New(FParent); Result:= FICMS51; end; @@ -153,7 +156,7 @@ function TDelphiFiscalCST.ICMS51: iICMS51; function TDelphiFiscalCST.ICMS70: iICMS70; begin if not Assigned(FICMS70) then - FICMS70:= TICMS70.New(self); + FICMS70:= TICMS70.New(FParent); Result:= FICMS70; end; @@ -161,7 +164,7 @@ function TDelphiFiscalCST.ICMS70: iICMS70; function TDelphiFiscalCST.PIS01: iPIS01; begin if not Assigned(FPIS01) then - FPIS01:= TPIS01.New(self); + FPIS01:= TPIS01.New(FParent); Result:= FPIS01; end; @@ -169,7 +172,7 @@ function TDelphiFiscalCST.PIS01: iPIS01; function TDelphiFiscalCST.PIS02: iPIS02; begin if not Assigned(FPIS02) then - FPIS02:= TPIS02.New(self); + FPIS02:= TPIS02.New(FParent); Result:= FPIS02; end; @@ -177,7 +180,7 @@ function TDelphiFiscalCST.PIS02: iPIS02; function TDelphiFiscalCST.PIS03: iPIS03; begin if not Assigned(FPIS03) then - FPIS03:= TPIS03.New(self); + FPIS03:= TPIS03.New(FParent); Result:= FPIS03; end; @@ -185,7 +188,7 @@ function TDelphiFiscalCST.PIS03: iPIS03; function TDelphiFiscalCST.IPI50: iIPI50; begin if not Assigned(FIPI50) then - FIPI50:= TIPI50.New(self); + FIPI50:= TIPI50.New(FParent); Result:= FIPI50; end; @@ -193,7 +196,7 @@ function TDelphiFiscalCST.IPI50: iIPI50; function TDelphiFiscalCST.COFINS02: iCOFINS02; begin if not Assigned(FCOFINS02) then - FCOFINS02:= TCOFINS02.New(self); + FCOFINS02:= TCOFINS02.New(FParent); Result:= FCOFINS02; end; @@ -201,7 +204,7 @@ function TDelphiFiscalCST.COFINS02: iCOFINS02; function TDelphiFiscalCST.COFINS03: iCOFINS03; begin if not Assigned(FCOFINS03) then - FCOFINS03:= TCOFINS03.New(self); + FCOFINS03:= TCOFINS03.New(FParent); Result:= FCOFINS03; end; @@ -209,12 +212,12 @@ function TDelphiFiscalCST.COFINS03: iCOFINS03; function TDelphiFiscalCST.COFINS01: iCOFINS01; begin if not Assigned(FCOFINS01) then - FCOFINS01:= TCOFINS01.New(self); + FCOFINS01:= TCOFINS01.New(FParent); Result:= FCOFINS01; end; -constructor TDelphiFiscalCST.create(Parent : iCalculo); +constructor TDelphiFiscalCST.create(Parent : iController); begin FParent:= Parent; end; @@ -225,7 +228,7 @@ destructor TDelphiFiscalCST.destroy; inherited; end; -class function TDelphiFiscalCST.New(Parent : iCalculo) : iCST; +class function TDelphiFiscalCST.New(Parent : iController) : iCST; begin Result:= Self.create(Parent); end; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas index a9f50bc..37d570a 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS01.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TCOFINS01 = class(TInterfacedObject, iCOFINS01) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iCOFINS01; + class function New(Parent : iController) : iCOFINS01; function BaseCofins: Double; function ValorCofins: Double; function ValorCofinsEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TCOFINS01.BaseCofins: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TCOFINS01.Create(Parent: iCST); +constructor TCOFINS01.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,24 @@ destructor TCOFINS01.Destroy; inherited; end; -function TCOFINS01.&End: iCST; +function TCOFINS01.&End: iController; begin Result:= FParent; end; -class function TCOFINS01.New(Parent: iCST): iCOFINS01; +class function TCOFINS01.New(Parent: iController): iCOFINS01; begin Result:= Self.Create(Parent); end; function TCOFINS01.ValorCofins: Double; begin - Result := RoundABNT(BaseCofins * (FParent.&End.COFINS.AliquotaCOFINS / 100), 2); + Result := RoundABNT(BaseCofins * (FParent.COFINS.AliquotaCOFINS / 100), 2); end; function TCOFINS01.ValorCofinsEspecifico: Double; begin - Result := RoundABNT((FParent.&End.COFINS.QtdeCOFINSTributada * FParent.&End.COFINS.ValorCOFINSPorUnidade), 2); + Result := RoundABNT((FParent.COFINS.QtdeCOFINSTributada * FParent.COFINS.ValorCOFINSPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas index 01ba030..b922e0c 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS02.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.CST.Interfaces; type TCOFINS02 = class(TInterfacedObject, iCOFINS02) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iCOFINS02; + class function New(Parent : iController) : iCOFINS02; function BaseCofins: Double; function ValorCofins: Double; function ValorCofinsEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TCOFINS02.BaseCofins: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TCOFINS02.Create(Parent: iCST); +constructor TCOFINS02.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,24 @@ destructor TCOFINS02.Destroy; inherited; end; -function TCOFINS02.&End: iCST; +function TCOFINS02.&End: iController; begin Result:= FParent; end; -class function TCOFINS02.New(Parent: iCST): iCOFINS02; +class function TCOFINS02.New(Parent: iController): iCOFINS02; begin Result:= Self.Create(Parent); end; function TCOFINS02.ValorCofins: Double; begin - Result := RoundABNT(BaseCofins * (FParent.&End.PIS.AliquotaPIS / 100), 2); + Result := RoundABNT(BaseCofins * (FParent.PIS.AliquotaPIS / 100), 2); end; function TCOFINS02.ValorCofinsEspecifico: Double; begin - Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); + Result := RoundABNT((FParent.PIS.QtdePISTributada * FParent.PIS.ValorPISPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas index aa044cb..b89f7dc 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.COFINS03.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.CST.Interfaces; type TCOFINS03 = class(TInterfacedObject, iCOFINS03) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iCOFINS03; + class function New(Parent : iController) : iCOFINS03; function BaseCofins: Double; function ValorCofins: Double; function ValorCofinsEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TCOFINS03.BaseCofins: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TCOFINS03.Create(Parent: iCST); +constructor TCOFINS03.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,24 @@ destructor TCOFINS03.Destroy; inherited; end; -function TCOFINS03.&End: iCST; +function TCOFINS03.&End: iController; begin Result:= FParent; end; -class function TCOFINS03.New(Parent: iCST): iCOFINS03; +class function TCOFINS03.New(Parent: iController): iCOFINS03; begin Result:= Self.Create(Parent); end; function TCOFINS03.ValorCofins: Double; begin - Result := RoundABNT(BaseCofins * (FParent.&End.PIS.AliquotaPIS / 100), 2); + Result := RoundABNT(BaseCofins * (FParent.PIS.AliquotaPIS / 100), 2); end; function TCOFINS03.ValorCofinsEspecifico: Double; begin - Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); + Result := RoundABNT((FParent.PIS.QtdePISTributada * FParent.PIS.ValorPISPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas index 70f6aa7..1cc9494 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS00.pas @@ -3,20 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TICMS00 = class(TInterfacedObject, iICMS00) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS00; + class function New(Parent : iController) : iICMS00; function BaseICMSProprio : double; function ValorICMSProprio : double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -27,10 +29,10 @@ implementation function TICMS00.BaseICMSProprio: double; begin - Result:= FParent.&End.ICMS.BaseICMSNormal; + Result:= FParent.ICMS.BaseICMSNormal; end; -constructor TICMS00.Create(Parent: iCST); +constructor TICMS00.Create(Parent: iController); begin FParent:= Parent; end; @@ -41,19 +43,19 @@ destructor TICMS00.Destroy; inherited; end; -function TICMS00.&End: iCST; +function TICMS00.&End: iController; begin Result:= FParent; end; -class function TICMS00.New(Parent: iCST): iICMS00; +class function TICMS00.New(Parent: iController): iICMS00; begin Result:= Self.Create(Parent); end; function TICMS00.ValorICMSProprio : double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS, 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas index fefe3df..d7614ef 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS10.pas @@ -3,24 +3,25 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.CST.Interfaces; type TICMS10 = class(TInterfacedObject, iICMS10) private [weak] - FParent : iCST; - function BaseICMSProprio: double; + FParent : iController; + function BaseICMSProprio: double; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS10; + class function New(Parent : iController) : iICMS10; function ValorBaseIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; function ValorIcmsSTDesonerado: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -31,10 +32,10 @@ implementation function TICMS10.BaseICMSProprio: double; begin - Result:= FParent.&End.ICMS.BaseICMSNormal; + Result:= FParent.ICMS.BaseICMSNormal; end; -constructor TICMS10.Create(Parent: iCST); +constructor TICMS10.Create(Parent: iController); begin FParent:= Parent; end; @@ -45,39 +46,39 @@ destructor TICMS10.Destroy; inherited; end; -function TICMS10.&End: iCST; +function TICMS10.&End: iController; begin Result:= FParent; end; -class function TICMS10.New(Parent: iCST): iICMS10; +class function TICMS10.New(Parent: iController): iICMS10; begin Result:= Self.Create(Parent); end; function TICMS10.ValorBaseIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSNormal, 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSNormal, 2); end; function TICMS10.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSST, 2); end; function TICMS10.ValorICMSProprio : double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS, 2); end; function TICMS10.ValorIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.ValorICMSSTProprio, 2); + Result:= RoundABNT(FParent.ST.ValorICMSSTProprio, 2); end; function TICMS10.ValorIcmsSTDesonerado: Double; begin - Result := RoundABNT(FParent.&End.ST.ValorICMSST - FParent.&End.ST.ValorICMSSTProprio, 2); + Result := RoundABNT(FParent.ST.ValorICMSST - FParent.ST.ValorICMSSTProprio, 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas index d372ea6..dd1a4e2 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS101.pas @@ -3,20 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TICMS101 = class(TInterfacedObject, iICMS101) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS101; + class function New(Parent : iController) : iICMS101; function BaseCreditoSN: Double; function ValorCreditoSN: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -27,10 +29,10 @@ implementation function TICMS101.BaseCreditoSN: Double; begin - Result := RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); + Result := RoundABNT(FParent.ICMS.BaseICMSProprio, 2); end; -constructor TICMS101.Create(Parent: iCST); +constructor TICMS101.Create(Parent: iController); begin FParent:= Parent; end; @@ -41,19 +43,19 @@ destructor TICMS101.Destroy; inherited; end; -function TICMS101.&End: iCST; +function TICMS101.&End: iController; begin Result:= FParent; end; -class function TICMS101.New(Parent: iCST): iICMS101; +class function TICMS101.New(Parent: iController): iICMS101; begin Result:= Self.Create(Parent); end; function TICMS101.ValorCreditoSN: Double; begin - Result := RoundABNT(BaseCreditoSN * (FParent.&End.ICMS.PercentualCreditoICMSSN / 100), 2); + Result := RoundABNT(BaseCreditoSN * (FParent.ICMS.PercentualCreditoICMSSN / 100), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas index 0f59b99..3ae4da1 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS20.pas @@ -3,22 +3,24 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TICMS20 = class(TInterfacedObject, iICMS20) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS20; + class function New(Parent : iController) : iICMS20; function BaseICMSProprio : double; function ValorICMSProprio : double; function ValorICMSDesonerado : double; function ValorICMSReduzido : double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -29,10 +31,10 @@ implementation function TICMS20.BaseICMSProprio: double; begin - Result:= FParent.&End.ICMS.BaseICMSProprio; + Result:= FParent.ICMS.BaseICMSProprio; end; -constructor TICMS20.Create(Parent: iCST); +constructor TICMS20.Create(Parent: iController); begin FParent:= Parent; end; @@ -43,29 +45,29 @@ destructor TICMS20.Destroy; inherited; end; -function TICMS20.&End: iCST; +function TICMS20.&End: iController; begin Result:= FParent; end; -class function TICMS20.New(Parent: iCST): iICMS20; +class function TICMS20.New(Parent: iController): iICMS20; begin Result:= Self.Create(Parent); end; function TICMS20.ValorICMSProprio : double; begin - Result:= RoundABNT((FParent.&End.ICMS.BaseICMSProprio * (FParent.&End.ICMS.AliquotaICMS / 100)), 2); + Result:= RoundABNT((FParent.ICMS.BaseICMSProprio * (FParent.ICMS.AliquotaICMS / 100)), 2); end; function TICMS20.ValorICMSReduzido: double; begin - Result:= RoundABNT((FParent.&End.ICMS.BaseICMSReduzido * (FParent.&End.ICMS.AliquotaICMS / 100)), 2); + Result:= RoundABNT((FParent.ICMS.BaseICMSReduzido * (FParent.ICMS.AliquotaICMS / 100)), 2); end; function TICMS20.ValorICMSDesonerado: double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS - ValorICMSReduzido, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS - ValorICMSReduzido, 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas index 4b73d17..fd8f319 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS201.pas @@ -3,24 +3,25 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TICMS201 = class(TInterfacedObject, iICMS201) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS201; + class function New(Parent : iController) : iICMS201; function BaseCreditoSN: Double; function ValorCreditoSN: Double; function ValorBaseIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -31,10 +32,10 @@ implementation function TICMS201.BaseCreditoSN: Double; begin - Result := RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); + Result := RoundABNT(FParent.ICMS.BaseICMSProprio, 2); end; -constructor TICMS201.Create(Parent: iCST); +constructor TICMS201.Create(Parent: iController); begin FParent:= Parent; end; @@ -45,41 +46,41 @@ destructor TICMS201.Destroy; inherited; end; -function TICMS201.&End: iCST; +function TICMS201.&End: iController; begin Result:= FParent; end; -class function TICMS201.New(Parent: iCST): iICMS201; +class function TICMS201.New(Parent: iController): iICMS201; begin Result:= Self.Create(Parent); end; function TICMS201.ValorBaseIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSProprio, 2); end; function TICMS201.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSSTCST, 2); end; function TICMS201.ValorCreditoSN: Double; begin - Result := RoundABNT(BaseCreditoSN * (FParent.&End.ICMS.PercentualCreditoICMSSN / 100), 2); + Result := RoundABNT(BaseCreditoSN * (FParent.ICMS.PercentualCreditoICMSSN / 100), 2); end; function TICMS201.ValorIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMSProprio, 2); end; function TICMS201.ValorIcmsST: Double; var lValor : double; begin - lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.ST.AliquotaICMSST / 100)), 2); result:= RoundABNT(lValor - ValorIcmsProprio, 2); end; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas index add7c48..3e17279 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS202.pas @@ -3,22 +3,23 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TICMS202 = class(TInterfacedObject, iICMS202) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS202; + class function New(Parent : iController) : iICMS202; function ValorBaseIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -27,7 +28,7 @@ implementation uses Delphiscal.Utils; -constructor TICMS202.Create(Parent: iCST); +constructor TICMS202.Create(Parent: iController); begin FParent:= Parent; end; @@ -38,36 +39,36 @@ destructor TICMS202.Destroy; inherited; end; -function TICMS202.&End: iCST; +function TICMS202.&End: iController; begin Result:= FParent; end; -class function TICMS202.New(Parent: iCST): iICMS202; +class function TICMS202.New(Parent: iController): iICMS202; begin Result:= Self.Create(Parent); end; function TICMS202.ValorBaseIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSProprio, 2); end; function TICMS202.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSSTCST, 2); end; function TICMS202.ValorIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMSProprio, 2); end; function TICMS202.ValorIcmsST: Double; var lValor : double; begin - lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.ST.AliquotaICMSST / 100)), 2); result:= RoundABNT(lValor - ValorIcmsProprio, 2); end; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas index 898a589..601aef2 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS203.pas @@ -3,22 +3,23 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TICMS203 = class(TInterfacedObject, iICMS203) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS203; + class function New(Parent : iController) : iICMS203; function ValorBaseIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -27,7 +28,7 @@ implementation uses Delphiscal.Utils; -constructor TICMS203.Create(Parent: iCST); +constructor TICMS203.Create(Parent: iController); begin FParent:= Parent; end; @@ -38,36 +39,36 @@ destructor TICMS203.Destroy; inherited; end; -function TICMS203.&End: iCST; +function TICMS203.&End: iController; begin Result:= FParent; end; -class function TICMS203.New(Parent: iCST): iICMS203; +class function TICMS203.New(Parent: iController): iICMS203; begin Result:= Self.Create(Parent); end; function TICMS203.ValorBaseIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSProprio, 2); end; function TICMS203.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSSTCST, 2); end; function TICMS203.ValorIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMSProprio, 2); end; function TICMS203.ValorIcmsST: Double; var lValor : double; begin - lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.ST.AliquotaICMSST / 100)), 2); result:= RoundABNT(lValor - ValorIcmsProprio, 2); end; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas index 3c02f6d..0efc493 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS30.pas @@ -3,23 +3,24 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TICMS30 = class(TInterfacedObject, iICMS30) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS30; + class function New(Parent : iController) : iICMS30; function ValorBaseIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; function ValorIcmsDesonerado: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,7 +29,7 @@ implementation uses Delphiscal.Utils; -constructor TICMS30.Create(Parent: iCST); +constructor TICMS30.Create(Parent: iController); begin FParent:= Parent; end; @@ -39,39 +40,39 @@ destructor TICMS30.Destroy; inherited; end; -function TICMS30.&End: iCST; +function TICMS30.&End: iController; begin Result:= FParent; end; -class function TICMS30.New(Parent: iCST): iICMS30; +class function TICMS30.New(Parent: iController): iICMS30; begin Result:= Self.Create(Parent); end; function TICMS30.ValorBaseIcmsProprio: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSNormal, 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSNormal, 2); end; function TICMS30.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSST, 2); end; function TICMS30.ValorIcmsDesonerado: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS, 2); end; function TICMS30.ValorICMSProprio : double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS, 2); end; function TICMS30.ValorIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.ValorICMSSTProprio, 2); + Result:= RoundABNT(FParent.ST.ValorICMSSTProprio, 2); end; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas index 8cf725b..5d6a0a1 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS51.pas @@ -3,22 +3,24 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TICMS51 = class(TInterfacedObject, iICMS51) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS51; + class function New(Parent : iController) : iICMS51; function BaseICMSProprio : double; function ValorICMSOperacao : double; function ValorICMSDiferido : double; function ValorICMSProprio : double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -29,10 +31,10 @@ implementation function TICMS51.BaseICMSProprio: double; begin - Result:= FParent.&End.ICMS.BaseICMSProprio; + Result:= FParent.ICMS.BaseICMSProprio; end; -constructor TICMS51.Create(Parent: iCST); +constructor TICMS51.Create(Parent: iController); begin FParent:= Parent; end; @@ -43,24 +45,24 @@ destructor TICMS51.Destroy; inherited; end; -function TICMS51.&End: iCST; +function TICMS51.&End: iController; begin Result:= FParent; end; -class function TICMS51.New(Parent: iCST): iICMS51; +class function TICMS51.New(Parent: iController): iICMS51; begin Result:= Self.Create(Parent); end; function TICMS51.ValorICMSDiferido: double; begin - result:= RoundABNT(ValorICMSOperacao * (FParent.&End.ICMS.PercentualDiferimento / 100), 2); + result:= RoundABNT(ValorICMSOperacao * (FParent.ICMS.PercentualDiferimento / 100), 2); end; function TICMS51.ValorICMSOperacao: double; begin - Result:= RoundABNT(FParent.&End.ICMS.BaseICMSProprio * (FParent.&End.ICMS.AliquotaICMS / 100), 2); + Result:= RoundABNT(FParent.ICMS.BaseICMSProprio * (FParent.ICMS.AliquotaICMS / 100), 2); end; function TICMS51.ValorICMSProprio : double; diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas index c438899..da31ae7 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.ICMS70.pas @@ -3,24 +3,26 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; + type TICMS70 = class(TInterfacedObject, iICMS70) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iICMS70; + class function New(Parent : iController) : iICMS70; function ValorBaseReduzidaIcmsProprio: Double; function ValorIcmsProprio: Double; function ValorIcmsDesonerado: Double; function ValorBaseIcmsST: Double; function ValorIcmsST: Double; function ValorIcmsSTDesonerado : Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -29,7 +31,7 @@ implementation uses Delphiscal.Utils; -constructor TICMS70.Create(Parent: iCST); +constructor TICMS70.Create(Parent: iController); begin FParent:= Parent; end; @@ -40,47 +42,47 @@ destructor TICMS70.Destroy; inherited; end; -function TICMS70.&End: iCST; +function TICMS70.&End: iController; begin Result:= FParent; end; -class function TICMS70.New(Parent: iCST): iICMS70; +class function TICMS70.New(Parent: iController): iICMS70; begin Result:= Self.Create(Parent); end; function TICMS70.ValorBaseIcmsST: Double; begin - Result:= RoundABNT(FParent.&End.ST.BaseICMSSTCST, 2); + Result:= RoundABNT(FParent.ST.BaseICMSSTCST, 2); end; function TICMS70.ValorBaseReduzidaIcmsProprio: Double; begin - result:= RoundABNT(FParent.&End.ICMS.BaseICMSReduzido, 2); + result:= RoundABNT(FParent.ICMS.BaseICMSReduzido, 2); end; function TICMS70.ValorIcmsDesonerado: Double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMS - FParent.&End.ICMS.ValorICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMS - FParent.ICMS.ValorICMSProprio, 2); end; function TICMS70.ValorICMSProprio : double; begin - Result:= RoundABNT(FParent.&End.ICMS.ValorICMSProprio, 2); + Result:= RoundABNT(FParent.ICMS.ValorICMSProprio, 2); end; function TICMS70.ValorIcmsST: Double; var lValor : double; begin - lValor:= RoundABNT((ValorBaseIcmsST * (FParent.&End.ST.AliquotaICMSST / 100)), 2); + lValor:= RoundABNT((ValorBaseIcmsST * (FParent.ST.AliquotaICMSST / 100)), 2); result:= RoundABNT(lValor - ValorIcmsProprio, 2); end; function TICMS70.ValorIcmsSTDesonerado: Double; begin - Result := RoundABNT(FParent.&End.ST.ValorICMSST - ValorIcmsST, 2); + Result := RoundABNT(FParent.ST.ValorICMSST - ValorIcmsST, 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas index 9943f9f..56d871e 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.IPI50.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TIPI50 = class(TInterfacedObject, iIPI50) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iIPI50; + class function New(Parent : iController) : iIPI50; function BaseIpi: Double; function ValorIpi: Double; function ValorIpiEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,13 @@ implementation function TIPI50.BaseIpi: Double; begin - result:= RoundABNT((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias), 2); + result:= RoundABNT((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias), 2); end; -constructor TIPI50.Create(Parent: iCST); +constructor TIPI50.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,12 +46,12 @@ destructor TIPI50.Destroy; inherited; end; -function TIPI50.&End: iCST; +function TIPI50.&End: iController; begin Result:= FParent; end; -class function TIPI50.New(Parent: iCST): iIPI50; +class function TIPI50.New(Parent: iController): iIPI50; begin Result:= Self.Create(Parent); end; @@ -55,12 +59,12 @@ class function TIPI50.New(Parent: iCST): iIPI50; function TIPI50.ValorIpi: Double; begin - Result := RoundABNT(BaseIpi * (FParent.&End.IPI.AliquotaIPI / 100), 2); + Result := RoundABNT(BaseIpi * (FParent.IPI.AliquotaIPI / 100), 2); end; function TIPI50.ValorIpiEspecifico: Double; begin - Result := RoundABNT((FParent.&End.IPI.QtdeIPITributada * FParent.&End.IPI.ValorIPIPorUnidade), 2); + Result := RoundABNT((FParent.IPI.QtdeIPITributada * FParent.IPI.ValorIPIPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas index c8e0caa..3cf771a 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS01.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TPIS01 = class(TInterfacedObject, iPIS01) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iPIS01; + class function New(Parent : iController) : iPIS01; function BasePis: Double; function ValorPis: Double; function ValorPisEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TPIS01.BasePis: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TPIS01.Create(Parent: iCST); +constructor TPIS01.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,25 @@ destructor TPIS01.Destroy; inherited; end; -function TPIS01.&End: iCST; +function TPIS01.&End: iController; begin Result:= FParent; end; -class function TPIS01.New(Parent: iCST): iPIS01; +class function TPIS01.New(Parent: iController): iPIS01; begin Result:= Self.Create(Parent); end; function TPIS01.ValorPis: Double; begin - Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); + Result := RoundABNT(BasePis * (FParent.PIS.AliquotaPIS / 100), 2); end; function TPIS01.ValorPisEspecifico: Double; begin - Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); + Result := RoundABNT((FParent.PIS.QtdePISTributada * + FParent.PIS.ValorPISPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas index bb76321..c480fa3 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS02.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TPIS02 = class(TInterfacedObject, iPIS02) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iPIS02; + class function New(Parent : iController) : iPIS02; function BasePis: Double; function ValorPis: Double; function ValorPisEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TPIS02.BasePis: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TPIS02.Create(Parent: iCST); +constructor TPIS02.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,24 @@ destructor TPIS02.Destroy; inherited; end; -function TPIS02.&End: iCST; +function TPIS02.&End: iController; begin Result:= FParent; end; -class function TPIS02.New(Parent: iCST): iPIS02; +class function TPIS02.New(Parent: iController): iPIS02; begin Result:= Self.Create(Parent); end; function TPIS02.ValorPis: Double; begin - Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); + Result := RoundABNT(BasePis * (FParent.PIS.AliquotaPIS / 100), 2); end; function TPIS02.ValorPisEspecifico: Double; begin - Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); + Result := RoundABNT((FParent.PIS.QtdePISTributada * FParent.PIS.ValorPISPorUnidade), 2); end; end. diff --git a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas index 8c70ad5..22fc240 100644 --- a/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas +++ b/src/Calculos/CST/DelphiFiscal.Impostos.CST.PIS03.pas @@ -3,21 +3,22 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Controller.Interfaces; type TPIS03 = class(TInterfacedObject, iPIS03) private [weak] - FParent : iCST; + FParent : iController; public - constructor Create(Parent : iCST); + constructor Create(Parent : iController); destructor Destroy; override; - class function New(Parent : iCST) : iPIS03; + class function New(Parent : iController) : iPIS03; function BasePis: Double; function ValorPis: Double; function ValorPisEspecifico: Double; - Function &End : iCST; + Function &End : iController; end; implementation @@ -28,10 +29,14 @@ implementation function TPIS03.BasePis: Double; begin - result:= RoundABNT(((FParent.&End.ValorProduto + FParent.&End.ValorFrete + FParent.&End.ValorSeguro + FParent.&End.ValorDespesasAcessorias) - FParent.&End.ValorDescontos), 2); + result:= RoundABNT(((FParent.Base.ValorProduto + + FParent.Base.ValorFrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias) - + FParent.Base.ValorDescontos), 2); end; -constructor TPIS03.Create(Parent: iCST); +constructor TPIS03.Create(Parent: iController); begin FParent:= Parent; end; @@ -42,24 +47,24 @@ destructor TPIS03.Destroy; inherited; end; -function TPIS03.&End: iCST; +function TPIS03.&End: iController; begin Result:= FParent; end; -class function TPIS03.New(Parent: iCST): iPIS03; +class function TPIS03.New(Parent: iController): iPIS03; begin Result:= Self.Create(Parent); end; function TPIS03.ValorPis: Double; begin - Result := RoundABNT(BasePis * (FParent.&End.PIS.AliquotaPIS / 100), 2); + Result := RoundABNT(BasePis * (FParent.PIS.AliquotaPIS / 100), 2); end; function TPIS03.ValorPisEspecifico: Double; begin - Result := RoundABNT((FParent.&End.PIS.QtdePISTributada * FParent.&End.PIS.ValorPISPorUnidade), 2); + Result := RoundABNT((FParent.PIS.QtdePISTributada * FParent.PIS.ValorPISPorUnidade), 2); end; end. diff --git a/src/Calculos/DelphiFiscal.Base.Interfaces.pas b/src/Calculos/DelphiFiscal.Base.Interfaces.pas new file mode 100644 index 0000000..ad75cb0 --- /dev/null +++ b/src/Calculos/DelphiFiscal.Base.Interfaces.pas @@ -0,0 +1,23 @@ +unit DelphiFiscal.Base.Interfaces; + +interface + +type + iBase = interface + ['{15AE0E74-C00A-41BC-8D42-ED45CE6D957B}'] + function ValorProduto(aValue : double) : iBase; overload; + function ValorProduto : double; overload; + function ValorFrete(aValue : double) : iBase; overload; + function ValorFrete : double; overload; + function ValorSeguro(aValue : double) : iBase; overload; + function ValorSeguro : double; overload; + function ValorDespesasAcessorias(aValue : double) : iBase; overload; + function ValorDespesasAcessorias : double; overload; + function ValorDescontos(aValue : double) : iBase; overload; + function ValorDescontos : double; overload; + function Quantidade(aValue : double) : iBase; overload; + function Quantidade : double; overload; + end; +implementation + +end. diff --git a/src/Calculos/DelphiFiscal.Base.pas b/src/Calculos/DelphiFiscal.Base.pas new file mode 100644 index 0000000..ca131ae --- /dev/null +++ b/src/Calculos/DelphiFiscal.Base.pas @@ -0,0 +1,132 @@ +unit DelphiFiscal.Base; + +interface + +uses + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.Base.Interfaces; + +type + TDelphiFiscalBase = class(TInterfacedObject, iBase) + private + [weak] + FParent : iController; + FValorProduto : double; + FValorFrete : double; + FValorSeguro : double; + FValorDespesasAcessorias : double; + FValorDesconto : double; + FQuantidade : double; + public + constructor create(Parent : iController); + destructor destroy; override; + class function New(Parent : iController) : iBase; + function ValorProduto(aValue : double) : iBase; overload; + function ValorProduto : double; overload; + function ValorFrete(aValue : double) : iBase; overload; + function ValorFrete : double; overload; + function ValorSeguro(aValue : double) : iBase; overload; + function ValorSeguro : double; overload; + function ValorDespesasAcessorias(aValue : double) : iBase; overload; + function ValorDespesasAcessorias : double; overload; + function ValorDescontos(aValue : double) : iBase; overload; + function ValorDescontos : double; overload; + function Quantidade(aValue : double) : iBase; overload; + function Quantidade : double; overload; + function &End : iController; + end; + +implementation + + +{ TDelphiFiscalBase } + +function TDelphiFiscalBase.&End: iController; +begin + Result:= FParent; +end; + +constructor TDelphiFiscalBase.create(Parent : iController); +begin + FParent:= Parent; +end; + +destructor TDelphiFiscalBase.destroy; +begin + + inherited; +end; + +class function TDelphiFiscalBase.New(Parent : iController) : iBase; +begin + Result:= Self.create(Parent); +end; + +function TDelphiFiscalBase.Quantidade: double; +begin + Result:= FQuantidade; +end; + +function TDelphiFiscalBase.Quantidade(aValue: double): iBase; +begin + Result:= Self; + FQuantidade:= aValue; +end; + +function TDelphiFiscalBase.ValorDescontos: double; +begin + Result:= FValorDesconto; +end; + +function TDelphiFiscalBase.ValorDescontos(aValue: double): iBase; +begin + Result:= Self; + FValorDesconto:= aValue; +end; + +function TDelphiFiscalBase.ValorDespesasAcessorias: double; +begin + Result:= FValorDespesasAcessorias; +end; + +function TDelphiFiscalBase.ValorDespesasAcessorias( + aValue: double): iBase; +begin + Result:= Self; + FValorDespesasAcessorias:= aValue; +end; + +function TDelphiFiscalBase.ValorFrete(aValue: double): iBase; +begin + Result:= Self; + FValorFrete:= aValue; +end; + +function TDelphiFiscalBase.ValorFrete: double; +begin + Result:= FValorFrete; +end; + +function TDelphiFiscalBase.ValorProduto: double; +begin + Result:= FValorProduto * FQuantidade; +end; + +function TDelphiFiscalBase.ValorProduto(aValue: double): iBase; +begin + Result:= Self; + FValorProduto:= aValue; +end; + +function TDelphiFiscalBase.ValorSeguro(aValue: double): iBase; +begin + Result:= Self; + FValorSeguro:= aValue; +end; + +function TDelphiFiscalBase.ValorSeguro: double; +begin + Result:= FValorSeguro; +end; + +end. diff --git a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.interfaces.pas b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.interfaces.pas new file mode 100644 index 0000000..1a6c841 --- /dev/null +++ b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.interfaces.pas @@ -0,0 +1,28 @@ +unit DelphiFiscal.Calculos.ICMS.interfaces; + +interface + +type + iICMS = interface + ['{3995FD99-145B-4F99-8E95-2172ED50248A}'] + function ValorIPI(aValue : double) : iICMS; overload; + function ValorIPI : double; overload; + function PercentualReducao(aValue : double) : iICMS; + function PercentualDiferimento(aValue : double) : iICMS; overload; + function PercentualDiferimento : double; overload; + function AliquotaICMS(aValue : double) : iICMS; overload; + function AliquotaICMS : Double; overload; + function PercentualCreditoICMSSN(aValue : double) : iICMS; overload; + function PercentualCreditoICMSSN : double; overload; + function ContemReducao(aValue : boolean) : iICMS; overload; + function ContemReducao : boolean; overload; + function BaseICMSProprio : double; + function BaseICMSNormal : double; + function BaseICMSReduzido : double; + function ValorICMS : Double; + function ValorICMSProprio : double; + end; + +implementation + +end. diff --git a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas index cde5cd7..2ec2caa 100644 --- a/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas +++ b/src/Calculos/ICMS/DelphiFiscal.Calculos.ICMS.pas @@ -3,14 +3,14 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.Calculos.ICMS.interfaces; -type + type TDelphiFiscalICMS = class(TInterfacedObject, iICMS) private [weak] - FParent : iCalculo; - FCST : iCST; + FParent : iController; FValorIpi: Double; FPercentualReducao: Double; @@ -25,12 +25,10 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) FPercentualCreditoICMSSN : double; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iICMS; - function &End : iCalculo; + class function New(Parent : iController) : iICMS; - function CST : iCST; function ValorIPI(aValue : double) : iICMS; overload; function ValorIPI : double; overload; function PercentualReducao(aValue : double) : iICMS; @@ -47,6 +45,7 @@ TDelphiFiscalICMS = class(TInterfacedObject, iICMS) function ContemReducao : boolean; overload; function ValorICMS : Double; function ValorICMSProprio : double; + function &End : iController; end; implementation @@ -55,26 +54,18 @@ implementation uses Delphiscal.Utils, DelphiFiscal.CST; -constructor TDelphiFiscalICMS.create(Parent : iCalculo); +constructor TDelphiFiscalICMS.create(Parent : iController); begin FParent:= Parent; end; -function TDelphiFiscalICMS.CST: iCST; -begin - if not Assigned(FCST) then - FCST:= TDelphiFiscalCST.New(FParent); - - Result:= FCST; -end; - destructor TDelphiFiscalICMS.destroy; begin inherited; end; -class function TDelphiFiscalICMS.New(Parent: iCalculo): iICMS; +class function TDelphiFiscalICMS.New(Parent: iController): iICMS; begin Result:= Self.create(Parent); end; @@ -85,7 +76,7 @@ function TDelphiFiscalICMS.AliquotaICMS(aValue: double): iICMS; FAliquotaICMS:= aValue; end; -function TDelphiFiscalICMS.&End: iCalculo; +function TDelphiFiscalICMS.&End: iController; begin Result:= FParent; end; @@ -108,7 +99,12 @@ function TDelphiFiscalICMS.PercentualCreditoICMSSN(aValue: double): iICMS; function TDelphiFiscalICMS.BaseICMSNormal : double; begin - Result:= RoundABNT(FParent.ValorProduto + FParent.Valorfrete + FParent.ValorSeguro + FParent.ValorDespesasAcessorias + FValorIpi - FParent.ValorDescontos, 2); + Result:= RoundABNT(FParent.Base.ValorProduto + + FParent.Base.Valorfrete + + FParent.Base.ValorSeguro + + FParent.Base.ValorDespesasAcessorias + + FValorIpi - + FParent.Base.ValorDescontos, 2); end; function TDelphiFiscalICMS.BaseICMSProprio : double; @@ -176,17 +172,6 @@ function TDelphiFiscalICMS.PercentualReducao(aValue: double): iICMS; FPercentualReducao:= aValue; end; -//function TDelphiFiscalICMS.ValorProduto(aValue: double): iICMS; -//begin -// Result:= self; -// FValorProduto:= aValue; -//end; -// -//function TDelphiFiscalICMS.ValorSeguro(aValue: double): iICMS; -//begin -// Result:= self; -// FValorSeguro:= aValue; -//end; end. diff --git a/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.Interfaces.pas b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.Interfaces.pas new file mode 100644 index 0000000..4fbe8d7 --- /dev/null +++ b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.Interfaces.pas @@ -0,0 +1,18 @@ +unit DelphiFiscal.Calculos.IPI.Interfaces; + +interface + +type + iIPI = interface + ['{CDDA0893-A68C-47D7-B843-07645B56D36D}'] + function AliquotaIPI(aValue : double) : iIPI; overload; + function AliquotaIPI : double; overload; + function ValorIPIPorUnidade(aValue : double) : iIPI; overload; + function ValorIPIPorUnidade : double; overload; + function QtdeIPITributada(aValue : double) : iIPI; overload; + function QtdeIPITributada : double; overload; + end; + +implementation + +end. diff --git a/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas index 4d491d0..4499ae7 100644 --- a/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas +++ b/src/Calculos/IPI/DelphiFiscal.Calculos.IPI.pas @@ -3,27 +3,28 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.Calculos.IPI.Interfaces; type TDelphiFiscalIPI = class(TInterfacedObject, iIPI) private [weak] - FParent : iCalculo; + FParent : iController; FAliquotaIPI : double; FValorIPIPorUnidade : double; FQtdeIPITributada : double; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iIPI; + class function New(Parent : iController) : iIPI; function AliquotaIPI(aValue : double) : iIPI; overload; function AliquotaIPI : double; overload; function ValorIPIPorUnidade(aValue : double) : iIPI; overload; function ValorIPIPorUnidade : double; overload; function QtdeIPITributada(aValue : double) : iIPI; overload; function QtdeIPITributada : double; overload; - function &End : iCalculo; + function &End : iController; end; implementation @@ -31,7 +32,7 @@ implementation uses Delphiscal.Utils; -function TDelphiFiscalIPI.&End: iCalculo; +function TDelphiFiscalIPI.&End: iController; begin Result:= FParent; end; @@ -47,7 +48,7 @@ function TDelphiFiscalIPI.AliquotaIPI: double; Result:= FAliquotaIPI; end; -constructor TDelphiFiscalIPI.create(Parent: iCalculo); +constructor TDelphiFiscalIPI.create(Parent: iController); begin FParent:= Parent; end; @@ -58,7 +59,7 @@ destructor TDelphiFiscalIPI.destroy; inherited; end; -class function TDelphiFiscalIPI.New(Parent: iCalculo): iIPI; +class function TDelphiFiscalIPI.New(Parent: iController): iIPI; begin Result:= Self.create(Parent); end; diff --git a/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.Intefaces.pas b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.Intefaces.pas new file mode 100644 index 0000000..a6471da --- /dev/null +++ b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.Intefaces.pas @@ -0,0 +1,18 @@ +unit DelphiFiscal.Calculos.PIS.Intefaces; + +interface + +type + iPIS = interface + ['{8FC6C2EA-4A1D-43AB-A55D-631E05C39145}'] + function AliquotaPIS(aValue : double) : iPIS; overload; + function AliquotaPIS : double; overload; + function ValorPISPorUnidade(aValue : double) : iPIS; overload; + function ValorPISPorUnidade : double; overload; + function QtdePISTributada(aValue : double) : iPIS; overload; + function QtdePISTributada : double; overload; + end; + +implementation + +end. diff --git a/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas index 3fbfac1..45f7144 100644 --- a/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas +++ b/src/Calculos/PIS/DelphiFiscal.Calculos.PIS.pas @@ -3,27 +3,29 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Calculos.PIS.Intefaces, + DelphiFiscal.Controller.Interfaces; + type TDelphiFiscalPIS = class(TInterfacedObject, iPIS) private [weak] - FParent : iCalculo; + FParent : iController; FAliquotaPIS : double; FValorIPIPorUnidade : double; FQtdeIPITributada : double; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iPIS; + class function New(Parent : iController) : iPIS; function AliquotaPIS(aValue : double) : iPIS; overload; function AliquotaPIS : double; overload; function ValorPISPorUnidade(aValue : double) : iPIS; overload; function ValorPISPorUnidade : double; overload; function QtdePISTributada(aValue : double) : iPIS; overload; function QtdePISTributada : double; overload; - function &End : iCalculo; + function &End : iController; end; implementation @@ -31,7 +33,7 @@ implementation uses Delphiscal.Utils; -function TDelphiFiscalPIS.&End: iCalculo; +function TDelphiFiscalPIS.&End: iController; begin Result:= FParent; end; @@ -47,7 +49,7 @@ function TDelphiFiscalPIS.AliquotaPIS: double; Result:= FAliquotaPIS; end; -constructor TDelphiFiscalPIS.create(Parent: iCalculo); +constructor TDelphiFiscalPIS.create(Parent: iController); begin FParent:= Parent; end; @@ -58,7 +60,7 @@ destructor TDelphiFiscalPIS.destroy; inherited; end; -class function TDelphiFiscalPIS.New(Parent: iCalculo): iPIS; +class function TDelphiFiscalPIS.New(Parent: iController): iPIS; begin Result:= Self.create(Parent); end; diff --git a/src/Calculos/ST/DelphiFiscal.Calculos.ST.Interfaces.pas b/src/Calculos/ST/DelphiFiscal.Calculos.ST.Interfaces.pas new file mode 100644 index 0000000..e92011f --- /dev/null +++ b/src/Calculos/ST/DelphiFiscal.Calculos.ST.Interfaces.pas @@ -0,0 +1,20 @@ +unit DelphiFiscal.Calculos.ST.Interfaces; + +interface + +type + iST = interface + ['{CADDC667-BDE5-4197-AA5B-1D892268ED2A}'] + function AliquotaICMSST(aValue : double) : iST; overload; + function AliquotaICMSST : double; overload; + function PercentualReducaoBaseICMSST(aValue : double) : iST; + function PercentualMVA(aValue : double) : iST; + function BaseICMSST : double; + function BaseICMSSTCST : double; + function ValorICMSSTProprio : double; + function ValorICMSST : double; + end; + +implementation + +end. diff --git a/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas b/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas index ab5e823..58a5763 100644 --- a/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas +++ b/src/Calculos/ST/DelphiFiscal.Calculos.ST.pas @@ -3,13 +3,14 @@ interface uses - DelphiFiscal.Calculos.Interfaces; + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.Calculos.ST.Interfaces; type TDelphiFiscalST = class(TInterfacedObject, iST) private [weak] - FParent : iCalculo; + FParent : iController; FAliquotaICMSST : double; FPercentualReducaoBaseICMSST : double; FPercentualMVA : double; @@ -21,9 +22,9 @@ TDelphiFiscalST = class(TInterfacedObject, iST) function CalcularBaseNormalSTCST: Double; function CalcularBaseReduzidaSTCST: Double; public - constructor create(Parent : iCalculo); + constructor create(Parent : iController); destructor destroy; override; - class function New(Parent : iCalculo) : iST; + class function New(Parent : iController) : iST; function AliquotaICMSST(aValue : double) : iST; overload; function AliquotaICMSST : double; overload; function PercentualReducaoBaseICMSST(aValue : double) : iST; @@ -32,7 +33,7 @@ TDelphiFiscalST = class(TInterfacedObject, iST) function BaseICMSSTCST : double; function ValorICMSSTProprio : double; function ValorICMSST : double; - function &End : iCalculo; + function &End : iController; end; implementation @@ -41,12 +42,12 @@ implementation uses Delphiscal.Utils; -function TDelphiFiscalST.&End: iCalculo; +function TDelphiFiscalST.&End: iController; begin Result:= FParent; end; -constructor TDelphiFiscalST.create(Parent : iCalculo); +constructor TDelphiFiscalST.create(Parent : iController); begin FParent:= Parent; end; @@ -57,7 +58,7 @@ destructor TDelphiFiscalST.destroy; inherited; end; -class function TDelphiFiscalST.New(Parent: iCalculo): iST; +class function TDelphiFiscalST.New(Parent: iController): iST; begin Result:= Self.create(Parent); end; diff --git a/src/Controller/DelphiFiscal.Controller.Interfaces.pas b/src/Controller/DelphiFiscal.Controller.Interfaces.pas new file mode 100644 index 0000000..9d0b2ee --- /dev/null +++ b/src/Controller/DelphiFiscal.Controller.Interfaces.pas @@ -0,0 +1,28 @@ +unit DelphiFiscal.Controller.Interfaces; + +interface + +uses + DelphiFiscal.Base.Interfaces, + DelphiFiscal.Calculos.ST.Interfaces, + DelphiFiscal.Calculos.PIS.Intefaces, + DelphiFiscal.Calculos.COFINS.Interfaces, + DelphiFiscal.Calculos.IPI.Interfaces, + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Calculos.ICMS.interfaces; + +type + iController = interface + ['{7C19E5B6-36C2-40F5-AD08-05D250A0B3EA}'] + function Base : iBase; + function ST : iST; + function PIS : iPIS; + function Cofins : iCofins; + function IPI : iIPI; + function CST : iCST; + function ICMS : iICMS; + end; + +implementation + +end. diff --git a/src/Controller/DelphiFiscal.Controller.pas b/src/Controller/DelphiFiscal.Controller.pas new file mode 100644 index 0000000..2f92254 --- /dev/null +++ b/src/Controller/DelphiFiscal.Controller.pas @@ -0,0 +1,123 @@ +unit DelphiFiscal.Controller; + +interface + +uses + DelphiFiscal.Calculos.ST.Interfaces, + DelphiFiscal.Controller.Interfaces, + DelphiFiscal.Base.Interfaces, + DelphiFiscal.Calculos.PIS.Intefaces, + DelphiFiscal.Calculos.COFINS.Interfaces, + DelphiFiscal.Calculos.IPI.Interfaces, + DelphiFiscal.CST.Interfaces, + DelphiFiscal.Calculos.ICMS.interfaces, DelphiFiscal.Base; + +type + TController = class(TInterfacedObject, iController) + private + FBase : iBase; + FST : iST; + FPIS : iPIS; + FCofins : iCofins; + FIPI : iIPI; + FCST : iCST; + FICMS : iICMS; + public + constructor Create; + destructor Destroy; override; + class function New : iController; + + function Base : iBase; + function ST : iST; + function PIS : iPIS; + function Cofins : iCofins; + function IPI : iIPI; + function CST : iCST; + function ICMS : iICMS; + end; + +implementation + +uses + DelphiFiscal.Calculos.ST, + DelphiFiscal.Calculos.PIS, + DelphiFiscal.Calculos.COFINS, + DelphiFiscal.Calculos.IPI, + DelphiFiscal.Calculos.ICMS, + DelphiFiscal.CST; + +{ TController } + +function TController.Base: iBase; +begin + if not Assigned(FBase) then + FBase:= TDelphiFiscalBase.New(Self); + + Result:= FBase; +end; + +function TController.Cofins: iCofins; +begin + if not Assigned(FCofins) then + FCofins:= TDelphiFiscalCOFINS.New(Self); + + Result:= FCofins; +end; + +constructor TController.Create; +begin + +end; + +function TController.CST: iCST; +begin + if not Assigned(FCST) then + FCST:= TDelphiFiscalCST.New(Self); + + Result:= FCST; +end; + +destructor TController.Destroy; +begin + + inherited; +end; + +function TController.ICMS: iICMS; +begin + if not Assigned(FICMS) then + FICMS:= TDelphiFiscalICMS.New(self); + + Result:= FICMS; +end; + +function TController.IPI: iIPI; +begin + if not Assigned(FIPI) then + FIPI:= TDelphiFiscalIPI.New(self); + + Result:= FIPI; +end; + +class function TController.New: iController; +begin + Result:= Self.Create; +end; + +function TController.PIS: iPIS; +begin + if not Assigned(FPIS) then + FPIS:= TDelphiFiscalPIS.New(Self); + + Result:= FPIS; +end; + +function TController.ST: iST; +begin + if not Assigned(FST) then + FST:= TDelphiFiscalST.New(Self); + + Result:= FST; +end; + +end. diff --git a/src/Util/Delphiscal.Utils.pas b/src/Util/Delphiscal.Utils.pas new file mode 100644 index 0000000..6b7679e --- /dev/null +++ b/src/Util/Delphiscal.Utils.pas @@ -0,0 +1,74 @@ +unit Delphiscal.Utils; + +interface + +uses System.Math; + +function RoundABNT(const AValue: Double; const Digits: TRoundToRange; const Delta: Double = 0.00001): Double; + +implementation + +function SimpleRoundToEX(const AValue: Extended; const ADigit: TRoundToRange = -2): Extended; +var + LFactor: Extended; +begin + LFactor := IntPower(10.0, ADigit); + if AValue < 0 then + Result := Int((AValue / LFactor) - 0.5) * LFactor + else + Result := Int((AValue / LFactor) + 0.5) * LFactor; +end; + +function RoundABNT(const AValue: Double; const Digits: TRoundToRange; const Delta: Double): Double; +var + LPow, LFracValue, LPowValue: Extended; + LRestPart: Double; + LIntCalc, LFracCalc, LLastNumber, LIntValue: Int64; + LIsNegative: Boolean; +{$IFNDEF EXTERNALLINKER} + LOldRM: TFPURoundingMode; +{$ELSE} + LOldRM: TRoundingMode; +{$ENDIF} +begin + LOldRM := GetRoundMode; + try + if LOldRM <> rmNearest then + SetRoundMode(rmNearest); + + LIsNegative := (AValue < 0); + LPow := IntPower(10, Abs(Digits)); + LPowValue := Abs(AValue) / 10; + LIntValue := Trunc(LPowValue); + LFracValue := Frac(LPowValue); + + LPowValue := SimpleRoundToEX(LFracValue * 10 * LPow, -9); + LIntCalc := Trunc(LPowValue); + LFracCalc := Trunc(Frac(LPowValue) * 100); + + if LFracCalc > 50 then + Inc(LIntCalc) + else if LFracCalc = 50 then + begin + LLastNumber := Round(Frac(LIntCalc / 10) * 10); + + if Odd(LLastNumber) then + Inc(LIntCalc) + else + begin + LRestPart := Frac(LPowValue * 10); + if LRestPart > Delta then + Inc(LIntCalc); + end; + end; + + Result := ((LIntValue * 10) + (LIntCalc / LPow)); + + if LIsNegative then + Result := -Result; + finally + SetRoundMode(LOldRM); + end; +end; + +end.