diff --git a/SpedBr/SpedBr.Common/Enums.cs b/SpedBr/SpedBr.Common/Enums.cs index 64dc75f..04d34f4 100644 --- a/SpedBr/SpedBr.Common/Enums.cs +++ b/SpedBr/SpedBr.Common/Enums.cs @@ -1111,4 +1111,15 @@ public enum IndTipoAjuste [DefaultValue(1)] Acrescimo } + + public enum CodMotRestCompl + { + [DefaultValue("SP000")] OperaçãonãoensejadoradeRessarcimentoouComplementodeICMSST, + [DefaultValue("SP100")] OperaçãoensejadoradeRessarcimentoICMSSTnahipótesedoIncisoIdoArt269doRICMS, + [DefaultValue("SP101")] OperaçãoensejadoradeRessarcimentodeICMSSTnahipóteseIncisoIIdoArt269doRICMS, + [DefaultValue("SP102")] OperaçãoensejadoradeRessarcimentodeICMSSTnahipóteseIncisoIIIdoArt269doRICMSsemmanutençãodocréditodeoperaçãoprópria, + [DefaultValue("SP200")] OperaçãoensejadoradeRessarcimentodeICMSSTnahipóteseIncisoIIIdoArt269doRICMS,commanutençãodocréditodeoperaçãoprópria, + [DefaultValue("SP201")] OperaçãoensejadoradeRessarcimentodeICMSSTnahipóteseIncisoIVdoArt269doRICMS, + [DefaultValue("SP300")] OperaçãoensejadoradeComplementodeICMSSTnahipótesedoIncisoIdoArt269doRICMS + } } \ No newline at end of file diff --git a/SpedBr/SpedBr.SpedFiscal/Bloco0.cs b/SpedBr/SpedBr.SpedFiscal/Bloco0.cs index 800c6e6..44f7004 100644 --- a/SpedBr/SpedBr.SpedFiscal/Bloco0.cs +++ b/SpedBr/SpedBr.SpedFiscal/Bloco0.cs @@ -138,7 +138,8 @@ public Registro0001() /// [SpedCampos(2, "IND_MOV", "N", 1, 0, true)] public IndMovimento IndMov { get; set; } - + + public Registro0002 Reg0002 { get; set; } public Registro0005 Reg0005 { get; set; } public List Reg0015s { get; set; } public Registro0100 Reg0100 { get; set; } @@ -153,6 +154,26 @@ public Registro0001() public List Reg0600s { get; set; } } + /// + /// REGISTRO 0002 – CLASSIFICAÇÃO DO ESTABELECIMENTO INDUSTRIAL OU EQUIPARADO A INDUSTRIAL + /// + public class Registro0002 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public Registro0002() + { + Reg = "0002"; + } + + /// + /// Informar a classificação do estabelecimento conforme tabela 4.5.5 + /// + [SpedCampos(2, "CLAS_ESTAB_IND", "N", 2, 0, true)] + public int ClasEstabInd { get; set; } + } + /// /// REGISTRO 0005: DADOS COMPLEMENTARES DA ENTIDADE /// diff --git a/SpedBr/SpedBr.SpedFiscal/BlocoC.cs b/SpedBr/SpedBr.SpedFiscal/BlocoC.cs index 57894f6..7e74eb1 100644 --- a/SpedBr/SpedBr.SpedFiscal/BlocoC.cs +++ b/SpedBr/SpedBr.SpedFiscal/BlocoC.cs @@ -248,6 +248,8 @@ public RegistroC100() public List RegC160s { get; set; } public List RegC165s { get; set; } public List RegC170s { get; set; } + public List RegC180s { get; set; } + public List RegC185s { get; set; } public List RegC190s { get; set; } public List RegC195s { get; set; } } @@ -1645,6 +1647,229 @@ public RegistroC179() public decimal IcmsRet { get; set; } } + /// + /// REGISTRO C180: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE ENTRADA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CÓDIGO 01, 1B, 04 e 55) + /// + public class RegistroC180 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC180() + { + Reg = "C180"; + } + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(2, "COD_RESP_RET", "N", 3, 0, true)] + public int CodRespRet { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(5, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário do ICMS operação própria que o informante teria direito ao crédito + /// caso a mercadoria estivesse sob o regime comum de tributação, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(6, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor unitário da base de cálculo do imposto pago ou retido anteriormente por + /// substituição, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV”, aplicando-se redução, se houver. + /// + [SpedCampos(7, "VL_UNIT_BC_ICMS_ST_CONV", "N", 0, 6, true)] + public decimal VlUnitBCIcmsStConv { get; set; } + + /// + /// Valor unitário do imposto pago ou retido anteriormente por substituição, + /// inclusive FCP se devido, considerando a unidade utilizada para informar o + /// campo “QUANT_CONV” + /// + [SpedCampos(8, "VL_UNIT_ICMS_ST_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStConv { get; set; } + + /// + /// Valor unitário do FCP_ST agregado ao valor informado no campo + /// “VL_UNIT_ICMS_ST_CONV” + /// + [SpedCampos(9, "VL_UNIT_FCP_ST_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpStConv { get; set; } + + /// + /// Código do modelo do documento de arrecadação: + /// 0 – Documento estadual de arrecadação + /// 1 – GNRE + /// + [SpedCampos(10, "COD_DA", "C", 1, 0, false)] + public string CodDa { get; set; } + + /// + /// Número do documento de arrecadação estadual, se houver + /// + [SpedCampos(10, "NUM_DA", "C", 60, 0, false)] + public string NumDa { get; set; } + } + + /// + /// REGISTRO C185: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE SAÍDA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CÓDIGO 01, 1B, 04, 55 e 65) + /// + public class RegistroC185 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC185() + { + Reg = "C185"; + } + + /// + /// Número sequencial do item no documento fiscal + /// + [SpedCampos(2, "NUM_ITEM", "N", 3, 0, true)] + public int NumItem { get; set; } + + /// + /// Código do item + /// + [SpedCampos(3, "COD_ITEM", "C", 60, 0, true)] + public string CodItem { get; set; } + + + /// + /// Código da situação tributária referente ao ICMS + /// + [SpedCampos(4, "CST_ICMS", "N", 3, 0, true)] + public int CstIcms { get; set; } + + /// + /// Código fiscal de operação e prestação + /// + [SpedCampos(5, "CFOP", "N", 4, 0, true)] + public int Cfop { get; set; } + + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(6, "COD_MOT_REST_COMPL", "N", 5, 0, true)] + public int CodMotRestCompl { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(7, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(8, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(9, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário para o ICMS na operação, caso não houvesse a ST, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”, considerando + /// redução da base de cálculo do ICMS ST na tributação, se houver. + /// + [SpedCampos(10, "VL_UNIT_ICMS_NA_OPERACAO_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsNaOperacaoConv { get; set; } + + + /// + /// Valor unitário do ICMS que o contribuinte teria se creditado, ou pode se + /// creditar, referente à operação de entrada da mercadoria, caso estivesse submetida + /// ao regime comum de tributação, no desfazimento da substituição tributária, + /// calculado conforme a legislação de cada UF, considerando a unidade utilizada + /// para informar o campo “QUANT_CONV” + /// + [SpedCampos(11, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor médio unitário do ICMS que o contribuinte teria se creditado referente à + /// operação de entrada das mercadorias em estoque caso estivesse submetida ao + /// regime comum de tributação, calculado conforme a legislação de cada UF, + /// considerando a unidade utilizada para informar o campo “QUANT_CONV” + /// + [SpedCampos(12, "VL_UNIT_ICMS_OP_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpEstoqueConv { get; set; } + + /// + /// Valor médio unitário do ICMS/ST, incluindo FCP ST, das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(13, "VL_UNIT_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStEstoqueConv { get; set; } + + /// + /// Valor médio unitário do FCP ST agregado ao ICMS das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(14, "VL_UNIT_FCP_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpStEstoqueConv { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(15, "VL_UNIT_ICMS_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvRest { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(16, "VL_UNIT_FCP_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitFcpStConvRest { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(17, "VL_UNIT_ICMS_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvCompl { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(18, "VL_UNIT_FCP_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitFcpStConvCompl { get; set; } + } + /// /// REGISTRO C190: REGISTRO ANALÍTICO DO DOCUMENTO (CÓDIGO 01, 1B, 04, 55 e 65) /// @@ -2456,6 +2681,132 @@ public RegistroC425() public decimal VlCofins { get; set; } } + /// + /// REGISTRO C430: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE SAÍDA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CÓDIGO 02, 2D e 60) + /// + public class RegistroC430 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC430() + { + Reg = "C430"; + } + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(2, "COD_MOT_REST_COMPL", "N", 5, 0, true)] + public int CodMotRestCompl { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(5, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário para o ICMS na operação, caso não houvesse a ST, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”, considerando + /// redução da base de cálculo do ICMS ST na tributação, se houver. + /// + [SpedCampos(6, "VL_UNIT_ICMS_NA_OPERACAO_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsNaOperacaoConv { get; set; } + + /// + /// Valor unitário do ICMS que o contribuinte teria se creditado, ou pode se + /// creditar, referente à operação de entrada da mercadoria, caso estivesse submetida + /// ao regime comum de tributação, no desfazimento da substituição tributária, + /// calculado conforme a legislação de cada UF, considerando a unidade utilizada + /// para informar o campo “QUANT_CONV” + /// + [SpedCampos(7, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor médio unitário do ICMS que o contribuinte teria se creditado referente à + /// operação de entrada das mercadorias em estoque caso estivesse submetida ao + /// regime comum de tributação, calculado conforme a legislação de cada UF, + /// considerando a unidade utilizada para informar o campo “QUANT_CONV” + /// + [SpedCampos(8, "VL_UNIT_ICMS_OP_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpEstoqueConv { get; set; } + + /// + /// Valor médio unitário do ICMS/ST, incluindo FCP ST, das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(9, "VL_UNIT_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStEstoqueConv { get; set; } + + /// + /// Valor médio unitário do FCP ST agregado ao ICMS das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(10, "VL_UNIT_FCP_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpIcmsStEstoqueConv { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(11, "VL_UNIT_ICMS_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvRest { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(12, "VL_UNIT_FCP_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitFcpStConvRest { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(13, "VL_UNIT_ICMS_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvCompl { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(14, "VL_UNIT_FCP_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitFcpStConvCompl { get; set; } + + /// + /// Código da situação tributária referente ao ICMS + /// + [SpedCampos(15, "CST_ICMS", "N", 3, 0, true)] + public int CstIcms { get; set; } + + /// + /// Código fiscal de operação e prestação + /// + [SpedCampos(16, "CFOP", "N", 4, 0, true)] + public int Cfop { get; set; } + } + + /// /// REGISTRO C460: DOCUMENTO FISCAL EMITIDO POR ECF (CÓDIGO 02, 2D e 60). /// @@ -2627,6 +2978,131 @@ public RegistroC470() public decimal VlCofins { get; set; } } + /// + /// REGISTRO C480: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE SAÍDA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CÓDIGO 02, 2D e 60) + /// + public class RegistroC480 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC480() + { + Reg = "C480"; + } + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(2, "COD_MOT_REST_COMPL", "N", 5, 0, true)] + public int CodMotRestCompl { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(5, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário para o ICMS na operação, caso não houvesse a ST, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”, considerando + /// redução da base de cálculo do ICMS ST na tributação, se houver. + /// + [SpedCampos(6, "VL_UNIT_ICMS_NA_OPERACAO_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsNaOperacaoConv { get; set; } + + /// + /// Valor unitário do ICMS que o contribuinte teria se creditado, ou pode se + /// creditar, referente à operação de entrada da mercadoria, caso estivesse submetida + /// ao regime comum de tributação, no desfazimento da substituição tributária, + /// calculado conforme a legislação de cada UF, considerando a unidade utilizada + /// para informar o campo “QUANT_CONV” + /// + [SpedCampos(7, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor médio unitário do ICMS que o contribuinte teria se creditado referente à + /// operação de entrada das mercadorias em estoque caso estivesse submetida ao + /// regime comum de tributação, calculado conforme a legislação de cada UF, + /// considerando a unidade utilizada para informar o campo “QUANT_CONV” + /// + [SpedCampos(8, "VL_UNIT_ICMS_OP_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpEstoqueConv { get; set; } + + /// + /// Valor médio unitário do ICMS/ST, incluindo FCP ST, das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(9, "VL_UNIT_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStEstoqueConv { get; set; } + + /// + /// Valor médio unitário do FCP ST agregado ao ICMS das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(10, "VL_UNIT_FCP_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpIcmsStEstoqueConv { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(11, "VL_UNIT_ICMS_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvRest { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(12, "VL_UNIT_FCP_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitFcpStConvRest { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(13, "VL_UNIT_ICMS_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvCompl { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(14, "VL_UNIT_FCP_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitFcpStConvCompl { get; set; } + + /// + /// Código da situação tributária referente ao ICMS + /// + [SpedCampos(15, "CST_ICMS", "N", 3, 0, true)] + public int CstIcms { get; set; } + + /// + /// Código fiscal de operação e prestação + /// + [SpedCampos(16, "CFOP", "N", 4, 0, true)] + public int Cfop { get; set; } + } + /// /// REGISTRO C490: REGISTRO ANALÍTICO DO MOVIMENTO DIÁRIO (CÓDIGO 02, 2D e 60). /// @@ -3042,21 +3518,67 @@ public RegistroC500(IndClasseConsumoGas indConsumoGas) [SpedCampos(27, "COD_GRUPO_TENSAO", "C", 2, 0, false)] public int? CodGrupoTensao { get; set; } - public List RegC510s { get; set; } - public List RegC590s { get; set; } - } + /// + /// Chave da Nota Fiscal de Energia Elétrica Eletrônica + /// + [SpedCampos(28, "CHV_DOCe", "C", 44, 0, false)] + public string ChvDoce { get; set; } - /// - /// REGISTRO C510: ITENS DO DOCUMENTO NOTA FISCAL/CONTA ENERGIA ELÉTRICA (CÓDIGO 06), - /// NOTA FISCAL/CONTA DE FORNECIMENTO D'ÁGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA - /// DE FORNECIMENTO DE GÁS (CÓDIGO 28) - /// - public class RegistroC510 : RegistroBaseSped - { /// - /// Inicializa uma nova instância da classe . + /// Finalidade da emissão do documento eletrônico: + /// 1 – Normal + /// 2 – Substituição + /// 3 – Normal com ajuste /// - public RegistroC510() + [SpedCampos(29, "FIN_DOCe", "C", 2, 0, false)] + public int? FinDoce { get; set; } + + /// + /// Chave da Nota Fiscal de Energia Elétrica Eletrônica + /// + [SpedCampos(30, "CHV_DOCe_REF", "C", 44, 0, false)] + public string ChvDoceRed { get; set; } + + /// + /// Indicador do Destinatário/Acessante: + /// 1 – Contribuinte do ICMS; + /// 2 – Contribuinte Isento de Inscrição no Cadastro de Contribuintes do ICMS; + /// 9 – Não Contribuinte. + /// + [SpedCampos(31, "IND_DEST", "N", 1, 0, false)] + public int IndDest { get; set; } + + /// + /// Código do município do destinatário conforme a tabela do IBGE. + /// + [SpedCampos(33, "COD_MUN_DEST", "N", 7, 0, false)] + public string CodMinDest { get; set; } + + /// + /// Código do município do destinatário conforme a tabela do IBGE. + /// + [SpedCampos(34, "COD_CTA", "C", 0, 0, false)] + public string CodCta { get; set; } + + public List RegC510s { get; set; } + public List RegC590s { get; set; } + public RegistroC591 RegC591 { get; set; } + public List RegC595s { get; set; } + public List RegC597s { get; set; } + + } + + /// + /// REGISTRO C510: ITENS DO DOCUMENTO NOTA FISCAL/CONTA ENERGIA ELÉTRICA (CÓDIGO 06), + /// NOTA FISCAL/CONTA DE FORNECIMENTO D'ÁGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA + /// DE FORNECIMENTO DE GÁS (CÓDIGO 28) + /// + public class RegistroC510 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC510() { Reg = "C510"; } @@ -3273,6 +3795,115 @@ public RegistroC590() public string CodObs { get; set; } } + /// + /// REGISTRO C591: INFORMAÇÕES DO FUNDO DE COMBATE À POBREZA – FCP NA NF3e (CÓDIGO 66) + /// + public class RegistroC591 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC591() + { + Reg = "C591"; + } + + /// + /// Alíquota do ICMS + /// + [SpedCampos(2, "VL_FCP_OP", "N", 0, 2, false)] + public decimal VlFcpOp { get; set; } + + /// + /// Valor da operação correspondete à combinação de + /// CST_ICMS, CFOP e alíquota do ICMS + /// + [SpedCampos(3, "VL_FCP_ST", "N", 0, 2, true)] + public decimal VlFcpSt { get; set; } + } + + /// + /// REGISTRO C595: OBSERVAÇÕES DO LANÇAMENTO FISCAL (CÓDIGOS 06, 28, 29 e 66) + /// + public class RegistroC595 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC595() + { + Reg = "C595"; + } + + /// + /// Código da observação do lançamento fiscal (campo 02 do Registro 0460) + /// + [SpedCampos(2, "COD_OBS", "C", 6, 0, true)] + public string CodObs { get; set; } + + /// + /// Descrição complementar do código de referência + /// + [SpedCampos(3, "TXT_COMPL", "C", 999, 0, false)] + public string TxtCompl { get; set; } + } + + /// + /// REGISTRO C597: OUTRAS OBRIGAÇÕES TRIBUTÁRIAS, AJUSTES E INFORMAÇÕES DE VALORES PROVENIENTES DE DOCUMENTO FISCAL + /// + public class RegistroC597 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC597() + { + Reg = "C597"; + } + + /// + /// Código do ajuste/benefício/incentivo + /// + [SpedCampos(2, "COD_AJ", "C", 10, 0, true)] + public string CodAj { get; set; } + + /// + /// Descrição complementar do ajuste do documento fiscal + /// + [SpedCampos(3, "DESCR_COMPL_AJ", "C", 999, 0, false)] + public string DescrComplAj { get; set; } + + /// + /// Código do item + /// + [SpedCampos(4, "COD_ITEM", "C", 60, 0, false)] + public string CodItem { get; set; } + + /// + /// Base de cálculo do ICMS ou do ICMS ST + /// + [SpedCampos(5, "VL_BC_ICMS", "N", 0, 2, false)] + public decimal VlBcIcms { get; set; } + + /// + /// Alíquota do ICMS + /// + [SpedCampos(6, "ALIQ_ICMS", "N", 6, 2, false)] + public decimal AliqIcms { get; set; } + + /// + /// Valor do ICMS ou do ICMS ST + /// + [SpedCampos(7, "VL_ICMS", "N", 0, 2, false)] + public decimal VlIcms { get; set; } + + /// + /// Outros valores + /// + [SpedCampos(8, "VL_OUTROS", "N", 0, 2, false)] + public decimal VlOutros { get; set; } + } + /// /// REGISTRO C600: CONSOLIDAÇÃO DIÁRIA DE NOTAS FISCAIS (EMPRESAS NÃO OBRIGADAS AO CONVÊNIO ICMS 115/03) /// @@ -3927,6 +4558,176 @@ public RegistroC800() public List RegC850s { get; set; } } + /// + /// REGISTRO C810: ITENS DO DOCUMENTO (CÓDIGO 59) + /// + public class RegistroC810 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC810() + { + Reg = "C810"; + } + + /// + /// Número sequencial do item no documento fiscal + /// + [SpedCampos(2, "NUM_ITEM", "N", 3, 0, true)] + public int NumItem { get; set; } + + /// + /// Código do item + /// + [SpedCampos(3, "COD_ITEM", "C", 60, 0, true)] + public string CodItem { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(4, "QTD", "N", 0, 3, true)] + public decimal Qtd { get; set; } + + /// + /// Unidade do item + /// + [SpedCampos(5, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor total do item + /// + [SpedCampos(6, "VL_ITEM", "N", 0, 2, true)] + public decimal VlItem { get; set; } + + /// + /// Código da situação tributária referente ao ICMS + /// + [SpedCampos(7, "CST_ICMS", "N", 3, 0, true)] + public int CstIcms { get; set; } + + /// + /// Código fiscal de operação e prestação + /// + [SpedCampos(8, "CFOP", "N", 4, 0, true)] + public int Cfop { get; set; } + } + + /// + /// REGISTRO C815: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE SAÍDA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CF-E-SAT) (CÓDIGO 59) + /// + public class RegistroC815 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC815() + { + Reg = "C815"; + } + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(2, "COD_MOT_REST_COMPL", "N", 5, 0, true)] + public int CodMotRestCompl { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(5, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário para o ICMS na operação, caso não houvesse a ST, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”, considerando + /// redução da base de cálculo do ICMS ST na tributação, se houver. + /// + [SpedCampos(6, "VL_UNIT_ICMS_NA_OPERACAO_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsNaOperacaoConv { get; set; } + + /// + /// Valor unitário do ICMS que o contribuinte teria se creditado, ou pode se + /// creditar, referente à operação de entrada da mercadoria, caso estivesse submetida + /// ao regime comum de tributação, no desfazimento da substituição tributária, + /// calculado conforme a legislação de cada UF, considerando a unidade utilizada + /// para informar o campo “QUANT_CONV” + /// + [SpedCampos(7, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor médio unitário do ICMS que o contribuinte teria se creditado referente à + /// operação de entrada das mercadorias em estoque caso estivesse submetida ao + /// regime comum de tributação, calculado conforme a legislação de cada UF, + /// considerando a unidade utilizada para informar o campo “QUANT_CONV” + /// + [SpedCampos(8, "VL_UNIT_ICMS_OP_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpEstoqueConv { get; set; } + + /// + /// Valor médio unitário do ICMS/ST, incluindo FCP ST, das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(9, "VL_UNIT_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStEstoqueConv { get; set; } + + /// + /// Valor médio unitário do FCP ST agregado ao ICMS das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(10, "VL_UNIT_FCP_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpIcmsStEstoqueConv { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(11, "VL_UNIT_ICMS_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvRest { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(12, "VL_UNIT_FCP_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitFcpStConvRest { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(13, "VL_UNIT_ICMS_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvCompl { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(14, "VL_UNIT_FCP_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitFcpStConvCompl { get; set; } + } + + /// /// REGISTRO C850: REGISTRO ANALÍTICO DO CF-E (CÓDIGO 59) /// @@ -4045,6 +4846,169 @@ public RegistroC860() public List RegC890s { get; set; } } + /// + /// REGISTRO C810: ITENS DO DOCUMENTO (CÓDIGO 59) + /// + public class RegistroC870 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC870() + { + Reg = "C870"; + } + + /// + /// Código do item + /// + [SpedCampos(2, "COD_ITEM", "C", 60, 0, true)] + public string CodItem { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QTD", "N", 0, 3, true)] + public decimal Qtd { get; set; } + + /// + /// Unidade do item + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor total do item + /// + [SpedCampos(5, "VL_ITEM", "N", 0, 2, true)] + public decimal VlItem { get; set; } + + /// + /// Código da situação tributária referente ao ICMS + /// + [SpedCampos(6, "CST_ICMS", "N", 3, 0, true)] + public int CstIcms { get; set; } + + /// + /// Código fiscal de operação e prestação + /// + [SpedCampos(8, "CFOP", "N", 4, 0, true)] + public int Cfop { get; set; } + } + + /// + /// REGISTRO C815: INFORMAÇÕES COMPLEMENTARES DAS OPERAÇÕES DE SAÍDA DE MERCADORIAS SUJEITAS À SUBSTITUIÇÃO TRIBUTÁRIA(CF-E-SAT) (CÓDIGO 59) + /// + public class RegistroC880 : RegistroBaseSped + { + /// + /// Inicializa uma nova instância da classe . + /// + public RegistroC880() + { + Reg = "C880"; + } + + /// + /// Código que indica o responsável pela retenção do ICMS-ST: 1-Remetente Direto 2-Remetente Indireto 3-Próprio declarante + /// + [SpedCampos(2, "COD_MOT_REST_COMPL", "N", 5, 0, true)] + public int CodMotRestCompl { get; set; } + + /// + /// Quantidade do item + /// + [SpedCampos(3, "QUANT_CONV", "N", 0, 6, true)] + public decimal QuantConv { get; set; } + + /// + /// Unidade adotada para informar o campo QUANT_CONV. + /// + [SpedCampos(4, "UNID", "C", 6, 0, true)] + public string Unid { get; set; } + + /// + /// Valor unitário da mercadoria, considerando a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(5, " VL_UNIT_CONV", "N", 0, 6, true)] + public decimal VlUnitConv { get; set; } + + /// + /// Valor unitário para o ICMS na operação, caso não houvesse a ST, considerando + /// unidade utilizada para informar o campo “QUANT_CONV”, considerando + /// redução da base de cálculo do ICMS ST na tributação, se houver. + /// + [SpedCampos(6, "VL_UNIT_ICMS_NA_OPERACAO_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsNaOperacaoConv { get; set; } + + /// + /// Valor unitário do ICMS que o contribuinte teria se creditado, ou pode se + /// creditar, referente à operação de entrada da mercadoria, caso estivesse submetida + /// ao regime comum de tributação, no desfazimento da substituição tributária, + /// calculado conforme a legislação de cada UF, considerando a unidade utilizada + /// para informar o campo “QUANT_CONV” + /// + [SpedCampos(7, "VL_UNIT_ICMS_OP_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpConv { get; set; } + + /// + /// Valor médio unitário do ICMS que o contribuinte teria se creditado referente à + /// operação de entrada das mercadorias em estoque caso estivesse submetida ao + /// regime comum de tributação, calculado conforme a legislação de cada UF, + /// considerando a unidade utilizada para informar o campo “QUANT_CONV” + /// + [SpedCampos(8, "VL_UNIT_ICMS_OP_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsOpEstoqueConv { get; set; } + + /// + /// Valor médio unitário do ICMS/ST, incluindo FCP ST, das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(9, "VL_UNIT_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitIcmsStEstoqueConv { get; set; } + + /// + /// Valor médio unitário do FCP ST agregado ao ICMS das mercadorias em + /// estoque, considerando a unidade utilizada para informar o campo + /// “QUANT_CONV” + /// + [SpedCampos(10, "VL_UNIT_FCP_ICMS_ST_ESTOQUE_CONV", "N", 0, 6, true)] + public decimal VlUnitFcpIcmsStEstoqueConv { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(11, "VL_UNIT_ICMS_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvRest { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(12, "VL_UNIT_FCP_ST_CONV_REST", "N", 0, 6, true)] + public decimal VlUnitFcpStConvRest { get; set; } + + /// + /// Valor unitário do total do ICMS/ST, incluindo FCP ST, a ser + /// restituído/ressarcido, calculado conforme a legislação de cada UF, considerando + /// a unidade utilizada para informar o campo “QUANT_CONV”. + /// + [SpedCampos(13, "VL_UNIT_ICMS_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitIcmsStConvCompl { get; set; } + + /// + /// Valor unitário correspondente à parcela de ICMS FCP ST que compõe o campo + /// “VL_UNIT_ICMS_ST_CONV_REST”, considerando a unidade utilizada para + /// informar o campo “QUANT_CONV”. + /// + [SpedCampos(14, "VL_UNIT_FCP_ST_CONV_COMPL", "N", 0, 6, true)] + public decimal VlUnitFcpStConvCompl { get; set; } + } + /// /// REGISTRO C890: RESUMO DIÁRIO DE CF-E (CÓDIGO 59) POR EQUIPAMENTO SAT-CF-E /// diff --git a/SpedBr/SpedBr.SpedFiscal/BlocoH.cs b/SpedBr/SpedBr.SpedFiscal/BlocoH.cs index e03e39c..ee42dcf 100644 --- a/SpedBr/SpedBr.SpedFiscal/BlocoH.cs +++ b/SpedBr/SpedBr.SpedFiscal/BlocoH.cs @@ -174,10 +174,47 @@ public RegistroH020() /// /// Informe o valor do ICMS a ser debitado ou creditado /// - [SpedCampos(2, "VL_ICMS", "N", 0, 2, true)] + [SpedCampos(4, "VL_ICMS", "N", 0, 2, true)] public decimal VlIcms { get; set; } } + /// + /// REGISTRO H020: Informação complementar do Inventário. + /// + public class RegistroH030 : RegistroBaseSped + { + /// + /// + public RegistroH030() + { + Reg = "H030"; + } + + /// + /// Valor médio unitário do ICMS OP + /// + [SpedCampos(2, "VL_ICMS_OP", "N", 0, 6, true)] + public decimal VlIcmsOp { get; set; } + + /// + /// Valor médio unitário da base de cálculo do ICMS ST + /// + [SpedCampos(3, "VL_BC_ICMS_ST", "N", 0, 6, true)] + public decimal VlBcIcmsSt { get; set; } + + /// + /// Valor médio unitário do ICMS ST + /// + [SpedCampos(4, "VL_ICMS_ST", "N", 0, 6, true)] + public decimal VlIcmsSt { get; set; } + + /// + /// Valor médio unitário do FCP + /// + [SpedCampos(5, "VL_FCP", "N", 0, 6, true)] + public decimal VlFcp { get; set; } + } + /// /// REGISTRO H990: ENCERRAMENTO DO BLOCO H. ///