コード例 #1
0
        public static TRegistro_LanFaturamento GerarDevolucao(TRegistro_LanFaturamento rNf)
        {
            CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor Reg_Clifor =
                CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rNf.Cd_clifor, null);
            #region Nota Fiscal Devolução
            TRegistro_LanFaturamento rNfDev = new TRegistro_LanFaturamento();
            CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPedido =
                new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                "where x.cfg_pedido = a.cfg_pedido " +
                                "and x.nr_pedido = " + rNf.Nr_pedido.ToString() + ")"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_fiscal",
                    vOperador = "=",
                    vVL_Busca = "'DV'"
                }
            }, 1, string.Empty);

            if (lCfgPedido.Count > 0)
            {
                rNfDev.Cd_empresa           = rNf.Cd_empresa;
                rNfDev.Nr_serie             = lCfgPedido[0].Nr_serie;
                rNfDev.Ds_serienf           = lCfgPedido[0].Ds_serienf;
                rNfDev.Cd_modelo            = lCfgPedido[0].Cd_modelo;
                rNfDev.Cd_movimentacao      = lCfgPedido[0].Cd_movto;
                rNfDev.Cd_cmi               = lCfgPedido[0].Cd_cmi;
                rNfDev.Tp_movimento         = lCfgPedido[0].Tp_movimento.ToUpper().Equals("S") ? "E" : "S";
                rNfDev.Dt_emissao           = CamadaDados.UtilData.Data_Servidor();
                rNfDev.Dt_saient            = CamadaDados.UtilData.Data_Servidor();
                rNfDev.Cd_uf_clifor         = rNf.Cd_uf_clifor;
                rNfDev.Cd_uf_empresa        = rNf.Cd_uf_empresa;
                rNfDev.Cd_condfiscal_clifor = rNf.Cd_condfiscal_clifor;
                rNfDev.rEndereco            = rNf.rEndereco;
                rNfDev.Cd_clifor            = rNf.Cd_clifor;
                rNfDev.Cd_endereco          = rNf.Cd_endereco;
                rNfDev.Nr_pedido            = rNf.Nr_pedido;
                using (TFNumero_Nota fNumero = new TFNumero_Nota())
                {
                    fNumero.Text              = "Dados Nota Fiscal Devolução";
                    fNumero.pCd_empresa       = rNf.Cd_empresa;
                    fNumero.pNm_empresa       = rNf.Nm_empresa;
                    fNumero.pCd_clifor        = rNf.Cd_clifor;
                    fNumero.pNm_clifor        = rNf.Nm_clifor;
                    fNumero.pTp_pessoa        = rNf.Tp_pessoa;
                    fNumero.pNr_serie         = lCfgPedido[0].Nr_serie;
                    fNumero.pDs_serie         = lCfgPedido[0].Ds_serienf;
                    fNumero.pCd_modelo        = lCfgPedido[0].Cd_modelo;
                    fNumero.pTp_movimento     = lCfgPedido[0].Tp_movimento.ToUpper().Equals("S") ? "E" : "S";
                    fNumero.pNr_notafiscal    = string.Empty;
                    fNumero.pDt_emissao       = rNfDev.Dt_emissao;
                    fNumero.pDt_saient        = rNfDev.Dt_saient;
                    fNumero.pSt_sequenciaauto = lCfgPedido[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
                    fNumero.pCd_movto         = rNfDev.Cd_movimentacaostring;
                    fNumero.pCd_cmi           = rNfDev.Cd_cmistring;
                    //Buscar insc. estadual origem
                    object obj_inscdestino = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                        new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = "a.cd_clifor",
                            vOperador = "=",
                            vVL_Busca = "'" + rNf.Cd_clifor.Trim() + "'"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.cd_endereco",
                            vOperador = "=",
                            vVL_Busca = "'" + rNf.Cd_endereco.Trim() + "'"
                        }
                    }, "a.insc_estadual");
                    if (obj_inscdestino != null)
                    {
                        fNumero.pInsc_estadual = obj_inscdestino.ToString();
                    }
                    fNumero.pTp_nota = (TCN_LanFaturamento.validarST_Nota(fNumero.pTp_movimento, fNumero.pTp_pessoa, Reg_Clifor.St_equiparado_pjbool, Reg_Clifor.St_agropecuariabool).Equals(0) ? "P" : "T");
                    if (fNumero.ShowDialog() == DialogResult.OK)
                    {
                        rNfDev.Nr_serie         = fNumero.pNr_serie;
                        rNfDev.Tp_pessoa        = fNumero.pTp_pessoa;
                        rNfDev.Cd_modelo        = fNumero.pCd_modelo;
                        rNfDev.Tp_movimento     = fNumero.pTp_movimento;
                        rNfDev.Tp_nota          = fNumero.pTp_nota;
                        rNfDev.Dt_emissao       = fNumero.pDt_emissao;
                        rNfDev.Dt_saient        = fNumero.pDt_saient;
                        rNfDev.Obsfiscal        = fNumero.pDs_obsfiscal;
                        rNfDev.Dadosadicionais  = fNumero.pDs_dadosadic;
                        rNfDev.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe;
                        if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal))
                        {
                            rNfDev.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal);
                        }
                        else
                        {
                            rNfDev.Nr_notafiscal = null;
                        }
                        rNfDev.St_sequenciaauto = fNumero.pSt_sequenciaauto;
                        if (rNfDev.Cd_cmistring.Trim() != fNumero.pCd_cmi.Trim())
                        {
                            CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                                CamadaNegocio.Fiscal.TCN_CadCMI.Busca(fNumero.pCd_cmi,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      string.Empty,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      false,
                                                                      null)[0];
                            rNfDev.Cminf.Add(new TRegistro_LanFaturamento_CMI()
                            {
                                St_compdevimposto = rCmi.St_compdevimposto,
                                St_complementar   = rCmi.St_complementar,
                                St_devolucao      = rCmi.St_devolucao,
                                St_geraestoque    = rCmi.St_geraestoque,
                                St_mestra         = rCmi.St_mestra,
                                St_simplesremessa = rCmi.St_simplesremessa,
                                St_retorno        = rCmi.St_retorno
                            });
                            rNfDev.Cd_cmistring   = fNumero.pCd_cmi;
                            rNfDev.Ds_cmi         = rCmi.Ds_cmi;
                            rNfDev.Tp_duplicata   = rCmi.Tp_duplicata;
                            rNfDev.Ds_tpduplicata = rCmi.ds_tpduplicata;
                        }
                        //Dados Frete
                        rNfDev.Cd_transportadora    = fNumero.pCd_transportadora;
                        rNfDev.Nm_razaosocialtransp = fNumero.pNm_transportadora;
                        rNfDev.Cpf_transp           = fNumero.pCnpjCpfTransp;
                        rNfDev.Cd_enderecotransp    = fNumero.pCd_endtransportadora;
                        rNfDev.Especie       = fNumero.pEspecie;
                        rNfDev.Placaveiculo  = fNumero.pPlacaVeiculo;
                        rNfDev.Freteporconta = fNumero.pTp_frete;
                        rNfDev.Vl_frete      = fNumero.pVl_frete;
                        rNfDev.Quantidade    = fNumero.pQuantidade;
                        rNfDev.Pesobruto     = fNumero.pPsbruto;
                        rNfDev.Pesoliquido   = fNumero.pPsliquido;
                        //Dados Exportacao
                        rNfDev.Cd_ufsaidaex = fNumero.pCd_ufsaidaex;
                        rNfDev.Ds_ufsaidaex = fNumero.pDs_ufsaidaex;
                        rNfDev.Uf_saidaex   = fNumero.pUf_saidaex;
                        rNfDev.Ds_localex   = fNumero.pDs_localex;
                    }
                    else
                    {
                        throw new Exception("Obrigatorio informar numero da nota fiscal de destino.");
                    }
                }
            }
            else
            {
                throw new Exception("Não existe configuração fiscal Devolução para tipo de pedido!");
            }
            //Itens da Nota
            rNf.ItensNota.FindAll(p => p.St_processar).ForEach(item =>
            {
                //Item da nota fiscal
                TRegistro_LanFaturamento_Item rItem = new TRegistro_LanFaturamento_Item();
                rItem.Cd_empresa            = item.Cd_empresa;
                rItem.Nr_pedido             = item.Nr_pedido;
                rItem.Id_pedidoitem         = item.Id_pedidoitem;
                rItem.Cd_produto            = item.Cd_produto;
                rItem.Cd_local              = item.Cd_local;
                rItem.Cd_condfiscal_produto = item.Cd_condfiscal_produto;
                rItem.Cd_unidade            = item.Cd_unidade;
                rItem.Cd_unidEst            = item.Cd_unidade;
                rItem.Quantidade            = item.Qtd_devolver;
                rItem.Quantidade_estoque    = item.Qtd_devolver;
                rItem.Vl_subtotal           = item.Qtd_devolver * item.Vl_unitario;
                rItem.Vl_subtotal_estoque   = item.Qtd_devolver * item.Vl_unitario;
                rItem.Vl_unitario           = item.Vl_unitario;
                rItem.Vl_desconto           = (item.Vl_desconto / item.Quantidade) * item.Qtd_devolver;
                rItem.Vl_juro_fin           = (item.Vl_juro_fin / item.Quantidade) * item.Qtd_devolver;

                //Buscar cfop do item
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNfDev.Cd_movimentacaostring,
                                                                   item.Cd_condfiscal_produto,
                                                                   rNfDev.rEndereco.Cd_uf.Trim().Equals("99") ? "I" : rNfDev.Cd_uf_clifor.Trim().Equals(rNfDev.Cd_uf_empresa.Trim()) ? "D" : "F",
                                                                   (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNfDev.Cd_uf_clifor : rNfDev.Cd_uf_empresa),
                                                                   (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNfDev.Cd_uf_empresa : rNfDev.Cd_uf_clifor),
                                                                   rNfDev.Tp_movimento,
                                                                   rNfDev.Cd_condfiscal_clifor,
                                                                   rItem.Cd_empresa,
                                                                   ref rCfop,
                                                                   null))
                {
                    rItem.Cd_cfop        = rCfop.CD_CFOP;
                    rItem.Ds_cfop        = rCfop.DS_CFOP;
                    rItem.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (rNf.rEndereco.Cd_uf.Trim().Equals("99") ? "internacional" : rNf.rEndereco.Cd_uf.Trim().Equals(rNf.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + rNf.Cd_movimentacaostring + " condição fiscal do produto " + item.Cd_condfiscal_produto);
                }
                //Procurar Impostos Estaduais para o Item
                string vObsFiscal       = string.Empty;
                TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(rItem.Cd_empresa,
                                                                                       (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa),
                                                                                       (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor),
                                                                                       rNfDev.Cd_movimentacaostring,
                                                                                       rNfDev.Tp_movimento,
                                                                                       rNfDev.Cd_condfiscal_clifor,
                                                                                       rItem.Cd_condfiscal_produto,
                                                                                       rItem.Vl_subtotal,
                                                                                       rItem.Quantidade,
                                                                                       ref vObsFiscal,
                                                                                       rNfDev.Dt_emissao,
                                                                                       rItem.Cd_produto,
                                                                                       rNfDev.Tp_nota,
                                                                                       rNfDev.Nr_serie,
                                                                                       null);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem);
                    rNf.Obsfiscal += vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(rItem.Cd_produto, rNf.Nr_serie, null))
                {
                    throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" +
                                        "Tipo Movimento: " + rNfDev.Tp_movimento + "\r\n" +
                                        "Movimentação: " + rNfDev.Cd_movimentacao.ToString() + "\r\n" +
                                        "Cond. Fiscal Clifor: " + rNfDev.Cd_condfiscal_clifor.Trim() + "\r\n" +
                                        "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" +
                                        "UF Origem: " + (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" +
                                        "UF Destino: " + (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim()));
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor,
                                                                          rItem.Cd_condfiscal_produto,
                                                                          rNfDev.Cd_movimentacaostring,
                                                                          rNfDev.Tp_movimento,
                                                                          rNfDev.Tp_pessoa,
                                                                          rNfDev.Cd_empresa,
                                                                          rNfDev.Nr_serie,
                                                                          rNfDev.Cd_clifor,
                                                                          rItem.Cd_unidEst,
                                                                          rNfDev.Dt_emissao,
                                                                          rItem.Quantidade,
                                                                          rItem.Vl_subtotal,
                                                                          rNfDev.Tp_nota,
                                                                          rNf.Cd_municipioexecservico,
                                                                          null), rItem, rNfDev.Tp_movimento);
                // Formar Itens a devolver
                rItem.lNfcompdev.Add(new TRegistro_LanFat_ComplementoDevolucao()
                {
                    Cd_empresa             = item.Cd_empresa,
                    Nr_notafiscal_origem   = rNf.Nr_notafiscal,
                    Nr_serie_origem        = rNf.Nr_serie,
                    Nr_lanctofiscal_origem = rNf.Nr_lanctofiscal,
                    Id_nfitem_origem       = item.Id_nfitem,
                    Qtd_lancto             = item.Qtd_devolver,
                    Vl_lancto   = item.Quantidade * item.Vl_unitario,
                    Tp_operacao = "D"
                });
                //Observação do Item com os dados das notas de orig
                rItem.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" +
                                         (rNf.Nr_notafiscalstr + rNf.Nr_serie).FormatStringDireita(21, ' ') +
                                         item.Qtd_devolver.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) +
                                         rItem.Sigla_unidade_estoque.Trim().FormatStringDireita(15, ' ') +
                                         decimal.Multiply(item.Quantidade, item.Vl_unitario).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n";
                rNfDev.ItensNota.Add(rItem);
            });
            return(rNfDev);

            #endregion
        }
コード例 #2
0
        public static void GravarDevAquisicao(TRegistro_DevAquisicao val,
                                              BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;

            if (banco == null)
            {
                banco = new BancoDados.TObjetoBanco();
                banco.CriarConexao(Parametros.pubLogin, Parametros.pubNM_Servidor, Parametros.pubNM_BancoDados);
                banco.CriarComando();
                banco.Conexao.Open();
                banco.Start_Tran(System.Data.IsolationLevel.ReadCommitted);
                banco.Comando.Transaction = banco.Transac;
                st_transacao = true;
            }
            try
            {
                #region Nota_Fiscal_Origem
                val.rNfOrigem.Nr_pedido            = val.Contrato_devolucao[0].Nr_pedido;
                val.rNfOrigem.Cd_clifor            = val.Contrato_Origem.Cd_clifor;
                val.rNfOrigem.Cd_cmi               = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmi;
                val.rNfOrigem.Cd_cmistring         = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmistring;;
                val.rNfOrigem.Cd_condfiscal_clifor = string.Empty;
                val.rNfOrigem.Cd_condpgto          = val.Contrato_Origem.CD_CondPGTO;
                val.rNfOrigem.Cd_empresa           = val.Contrato_Origem.Cd_empresa;
                val.rNfOrigem.Cd_endereco          = val.Contrato_Origem.Cd_endereco;
                val.rNfOrigem.Cd_modelo            = val.Contrato_Origem.Pedido_Fiscal[0].Cd_modelo;
                val.rNfOrigem.Cd_movimentacao      = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto;

                if (val.Duplicata_Origem.Count > 0)
                {
                    val.rNfOrigem.Duplicata = val.Duplicata_Origem;
                }

                //Criar itens da nota fiscal
                TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item();
                Reg_Itens_Nota.Cd_produto    = val.Contrato_devolucao[0].Cd_produto;
                Reg_Itens_Nota.lNfcompdev    = val.Devolucao;
                Reg_Itens_Nota.Quantidade    = val.Quantidade;
                Reg_Itens_Nota.Vl_unitario   = val.Vl_unit_origem;
                Reg_Itens_Nota.Cd_local      = val.Contrato_devolucao[0].CD_Local;
                Reg_Itens_Nota.Vl_subtotal   = val.Vl_subtotal_origem;
                Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem.Value;
                Reg_Itens_Nota.Nr_pedido     = val.Contrato_Origem.Nr_pedido.Value;
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring,
                                                                   val.Contrato_devolucao[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" :
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                   val.Contrato_Origem.CD_UFClifor,
                                                                   val.rNfOrigem.Tp_movimento,
                                                                   val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Origem.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" :
                                                              val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_devolucao[0].Cd_condfiscal_produto);
                }

                Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade;
                Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                string           vObsFiscal = string.Empty;
                TList_ImpostosNF lImpostos  = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa,
                                                                                           val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                                           val.Contrato_Origem.CD_UFClifor,
                                                                                           val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                                           val.rNfOrigem.Tp_movimento,
                                                                                           val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                                           val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                                           val.Vl_subtotal_origem,
                                                                                           val.Quantidade,
                                                                                           ref vObsFiscal,
                                                                                           val.rNfOrigem.Dt_emissao,
                                                                                           val.Reg_Produto_Origem.CD_Produto,
                                                                                           val.rNfOrigem.Tp_nota,
                                                                                           val.rNfOrigem.Nr_serie,
                                                                                           banco);
                if (lImpostos.Count > 0)
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpostos[0], Reg_Itens_Nota);
                    val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfOrigem.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Origem.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de origem
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfOrigem.Tp_movimento,
                                                                          val.Reg_Clifor_Origem.Tp_pessoa,
                                                                          val.Contrato_devolucao[0].CD_Empresa,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Origem.Cd_clifor,
                                                                          val.Reg_Produto_Origem.CD_Unidade,
                                                                          val.Dt_lancto,
                                                                          Reg_Itens_Nota.Quantidade,
                                                                          Reg_Itens_Nota.Vl_subtotal,
                                                                          val.rNfOrigem.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento);
                //Gerar observacao para o item
                //Observação do Item com os dados das notas de origem
                string obsitem = string.Empty;
                val.Devolucao.ForEach(p =>
                {
                    obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') +
                               (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) +
                                Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') +
                               p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n";
                });
                Reg_Itens_Nota.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" + obsitem;
                //Adicionar item a nota fiscal de origem
                val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota);
                //Gravar nota fiscal de origem
                TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, banco);
                val.Contrato_devolucao[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value;
                #endregion

                #region Nota_Fiscal_Destino
                val.rNfDestino.Nr_pedido       = val.Contrato_compra[0].Nr_pedido;
                val.rNfDestino.Cd_clifor       = val.Contrato_Destino.Cd_clifor;
                val.rNfDestino.Cd_cmi          = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmi;
                val.rNfDestino.Cd_cmistring    = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmistring;;
                val.rNfDestino.Cd_condpgto     = val.Contrato_Destino.CD_CondPGTO;
                val.rNfDestino.Cd_empresa      = val.Contrato_Destino.Cd_empresa;
                val.rNfDestino.Cd_endereco     = val.Contrato_Destino.Cd_endereco;
                val.rNfDestino.Cd_modelo       = val.Contrato_Destino.Pedido_Fiscal[0].Cd_modelo;
                val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Destino.Count > 0)
                {
                    val.rNfDestino.Duplicata = val.Duplicata_Destino;
                }

                //Registro item da nota fiscal de destino
                TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item();
                if (val.Contrato_compra[0].CD_Unidade_Est.Equals(val.Contrato_devolucao[0].CD_Unidade_Est))
                {
                    Reg_Itens_Nota_Destino.Quantidade = val.Quantidade;
                }
                else
                {
                    Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Contrato_compra[0].CD_Unidade_Est, val.Contrato_devolucao[0].CD_Unidade_Est, val.Quantidade, 3, banco);
                }
                Reg_Itens_Nota_Destino.Cd_produto    = val.Contrato_compra[0].Cd_produto;
                Reg_Itens_Nota_Destino.Vl_unitario   = val.Vl_unit_destino;
                Reg_Itens_Nota_Destino.Cd_local      = val.Contrato_compra[0].CD_Local;
                Reg_Itens_Nota_Destino.Vl_subtotal   = val.Vl_subtotal_destino;
                Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem;
                Reg_Itens_Nota_Destino.Nr_pedido     = val.Contrato_Destino.Nr_pedido.Value;
                rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring,
                                                                   val.Contrato_compra[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I":
                                                                   val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                   val.Contrato_Destino.CD_UFClifor,
                                                                   val.rNfDestino.Tp_movimento,
                                                                   val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Destino.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota_Destino.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota_Destino.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_compra[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade;
                Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa,
                                                                                       val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                                       val.Contrato_Destino.CD_UFClifor,
                                                                                       val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                       val.rNfDestino.Tp_movimento,
                                                                                       val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                       val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                       val.Vl_subtotal_destino,
                                                                                       val.Quantidade,
                                                                                       ref vObsFiscal,
                                                                                       val.rNfDestino.Dt_emissao,
                                                                                       val.Reg_Produto_Destino.CD_Produto,
                                                                                       val.rNfDestino.Tp_nota,
                                                                                       val.rNfDestino.Nr_serie,
                                                                                       banco);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino);
                    val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco))
                {
                    throw new Exception("Não existe configuração fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Destino.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                          val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfDestino.Tp_movimento,
                                                                          val.Reg_Clifor_Destino.Tp_pessoa,
                                                                          val.Contrato_compra[0].CD_Empresa,
                                                                          val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Destino.Cd_clifor,
                                                                          val.Reg_Produto_Destino.CD_Unidade,
                                                                          val.Dt_lancto,
                                                                          Reg_Itens_Nota_Destino.Quantidade,
                                                                          Reg_Itens_Nota_Destino.Vl_subtotal,
                                                                          val.rNfDestino.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento);
                val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino);
                //Gravar Nota Fiscal Destino
                TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, banco);
                val.Contrato_compra[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value;
                #endregion

                if (st_transacao)
                {
                    banco.Transac.Commit();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    banco.Transac.Rollback();
                }
                throw new Exception("Erro gravar devolução/aquisição: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    if (banco.Conexao.State == System.Data.ConnectionState.Open)
                    {
                        banco.Conexao.Close();
                    }
                    banco = null;
                }
            }
        }
コード例 #3
0
        public static string Grava_Transferencia(TRegistro_Transferencia val,
                                                 TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Transferencia qtb_Transferencia = new TCD_Transferencia();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_Transferencia.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_Transferencia.Banco_Dados = banco;
                }

                // Grava Transferencia
                string retorno = qtb_Transferencia.Gravar(val);
                val.ID_Transf = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_TRANSF"));
                // Grava Transferencia Pedido Origem

                #region Nota_Fiscal_Origem
                val.rNfOrigem.Nr_pedido            = val.Transf_X_Contrato_Origem[0].Nr_pedido;
                val.rNfOrigem.Cd_clifor            = val.Contrato_Origem.Cd_clifor;
                val.rNfOrigem.Cd_condfiscal_clifor = string.Empty;
                val.rNfOrigem.Cd_condpgto          = val.Contrato_Origem.CD_CondPGTO;
                val.rNfOrigem.Cd_empresa           = val.Contrato_Origem.Cd_empresa;
                val.rNfOrigem.Cd_endereco          = val.Contrato_Origem.Cd_endereco;
                val.rNfOrigem.Cd_movimentacao      = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Origem.Count > 0)
                {
                    val.rNfOrigem.Duplicata = val.Duplicata_Origem;
                }

                //Criar itens da nota fiscal
                TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item();
                Reg_Itens_Nota.Cd_produto    = val.Transf_X_Contrato_Origem[0].Cd_produto;
                Reg_Itens_Nota.lNfcompdev    = val.Complemento_Devolucao;
                Reg_Itens_Nota.Quantidade    = val.QTD_Transf;
                Reg_Itens_Nota.Vl_unitario   = val.VL_Unit_Origem;
                Reg_Itens_Nota.Cd_local      = val.Contrato_Origem.Cd_local;
                Reg_Itens_Nota.Vl_subtotal   = val.VL_Sub_Total_Origem;
                Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem;
                Reg_Itens_Nota.Nr_pedido     = val.Contrato_Origem.Nr_pedido.Value;
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring,
                                                                   val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" :
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                   val.Contrato_Origem.CD_UFClifor,
                                                                   val.rNfOrigem.Tp_movimento,
                                                                   val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Origem.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade;
                Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                string           vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUfOrig = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa,
                                                                                           val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                                           val.Contrato_Origem.CD_UFClifor,
                                                                                           val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                                           val.rNfOrigem.Tp_movimento,
                                                                                           val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                                           val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                                           val.VL_Sub_Total_Origem,
                                                                                           val.QTD_Transf,
                                                                                           ref vObsFiscal,
                                                                                           val.rNfOrigem.Dt_emissao,
                                                                                           val.Reg_Produto_Origem.CD_Produto,
                                                                                           val.rNfOrigem.Tp_nota,
                                                                                           val.rNfOrigem.Nr_serie,
                                                                                           banco);
                if (lImpUfOrig.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUfOrig.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota);
                    val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Origem.CD_Produto, val.rNfOrigem.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Origem.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de origem
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfOrigem.Tp_movimento,
                                                                          val.Reg_Clifor_Origem.Tp_pessoa,
                                                                          val.Transf_X_Contrato_Origem[0].CD_Empresa,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Origem.Cd_clifor,
                                                                          val.Reg_Produto_Origem.CD_Unidade,
                                                                          val.DT_Lancto,
                                                                          Reg_Itens_Nota.Quantidade,
                                                                          Reg_Itens_Nota.Vl_subtotal,
                                                                          val.rNfOrigem.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento);
                //Gerar observacao para o item
                //Observação do Item com os dados das notas de origem
                string obsitem = string.Empty;
                val.Complemento_Devolucao.ForEach(p =>
                {
                    obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') +
                               (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) +
                                Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') +
                               p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n";
                });
                Reg_Itens_Nota.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" + obsitem;
                //Adicionar item a nota fiscal de origem
                val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota);
                //Gravar nota fiscal de origem
                TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, qtb_Transferencia.Banco_Dados);
                val.Transf_X_Contrato_Origem[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value;
                //Gravar transferencia x pedido origem
                TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato()
                {
                    CD_Empresa      = val.Transf_X_Contrato_Origem[0].CD_Empresa,
                    Cd_produto      = val.Transf_X_Contrato_Origem[0].Cd_produto,
                    ID_Transf       = val.ID_Transf,
                    TP_Movimento    = val.rNfOrigem.Tp_movimento,
                    NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value,
                    ID_NFItem       = val.rNfOrigem.ItensNota[0].Id_nfitem,
                    NR_Contrato     = val.Contrato_Origem.Nr_contrato
                }, qtb_Transferencia.Banco_Dados);
                #endregion

                #region Nota_Fiscal_Destino
                val.rNfDestino.Nr_pedido       = val.Transf_X_Contrato_Destino[0].Nr_pedido;
                val.rNfDestino.Cd_clifor       = val.Contrato_Destino.Cd_clifor;
                val.rNfDestino.Cd_condpgto     = val.Contrato_Destino.CD_CondPGTO;
                val.rNfDestino.Cd_empresa      = val.Contrato_Destino.Cd_empresa;
                val.rNfDestino.Cd_endereco     = val.Contrato_Destino.Cd_endereco;
                val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Destino.Count > 0)
                {
                    val.rNfDestino.Duplicata = val.Duplicata_Destino;
                }

                //Registro item da nota fiscal de destino
                TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item();
                if (val.Transf_X_Contrato_Destino[0].CD_Unidade_Est.Equals(val.Transf_X_Contrato_Origem[0].CD_Unidade_Est))
                {
                    Reg_Itens_Nota_Destino.Quantidade = val.QTD_Transf;
                }
                else
                {
                    Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Transf_X_Contrato_Destino[0].CD_Unidade_Est, val.Transf_X_Contrato_Origem[0].CD_Unidade_Est, val.QTD_Transf, 3, qtb_Transferencia.Banco_Dados);
                }

                Reg_Itens_Nota_Destino.Cd_produto    = val.Transf_X_Contrato_Destino[0].Cd_produto;
                Reg_Itens_Nota_Destino.Vl_unitario   = val.VL_Unit_Destino;
                Reg_Itens_Nota_Destino.Cd_local      = val.Contrato_Destino.Cd_local;
                Reg_Itens_Nota_Destino.Vl_subtotal   = val.VL_Sub_Total_Destino;
                Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem.Value;
                Reg_Itens_Nota_Destino.Nr_pedido     = val.Contrato_Destino.Nr_pedido.Value;
                rCfop = null;
                if (TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring,
                                              val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto,
                                              val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I" :
                                              val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "D" : "F",
                                              val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                              val.Contrato_Destino.CD_UFClifor,
                                              val.rNfDestino.Tp_movimento,
                                              val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                              val.Reg_Empresa_Destino.Cd_empresa,
                                              ref rCfop,
                                              banco))
                {
                    Reg_Itens_Nota_Destino.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota_Destino.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade;
                Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa,
                                                                                       val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                                       val.Contrato_Destino.CD_UFClifor,
                                                                                       val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                       val.rNfDestino.Tp_movimento,
                                                                                       val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                       val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                       val.VL_Sub_Total_Destino,
                                                                                       val.QTD_Transf,
                                                                                       ref vObsFiscal,
                                                                                       val.rNfDestino.Dt_emissao,
                                                                                       val.Reg_Produto_Destino.CD_Produto,
                                                                                       val.rNfDestino.Tp_nota,
                                                                                       val.rNfDestino.Nr_serie,
                                                                                       banco);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino);
                    val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Destino.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                                                      val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                                                      val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                                                      val.rNfDestino.Tp_movimento,
                                                                                                                      val.Reg_Clifor_Destino.Tp_pessoa,
                                                                                                                      val.Transf_X_Contrato_Destino[0].CD_Empresa,
                                                                                                                      val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie,
                                                                                                                      val.Reg_Clifor_Destino.Cd_clifor,
                                                                                                                      val.Reg_Produto_Destino.CD_Unidade,
                                                                                                                      val.DT_Lancto,
                                                                                                                      Reg_Itens_Nota_Destino.Quantidade,
                                                                                                                      Reg_Itens_Nota_Destino.Vl_subtotal,
                                                                                                                      val.rNfDestino.Tp_nota,
                                                                                                                      string.Empty,
                                                                                                                      banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento);
                val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino);
                //Gravar Nota Fiscal Destino
                TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, qtb_Transferencia.Banco_Dados);
                val.Transf_X_Contrato_Destino[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value;

                TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato()
                {
                    CD_Empresa      = val.Transf_X_Contrato_Destino[0].CD_Empresa,
                    Cd_produto      = val.Transf_X_Contrato_Destino[0].Cd_produto,
                    ID_Transf       = val.ID_Transf,
                    TP_Movimento    = val.rNfDestino.Tp_movimento,
                    NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value,
                    ID_NFItem       = val.rNfDestino.ItensNota[0].Id_nfitem,
                    NR_Contrato     = val.Transf_X_Contrato_Destino[0].NR_Contrato
                }, qtb_Transferencia.Banco_Dados);

                #endregion

                if (st_transacao)
                {
                    qtb_Transferencia.Banco_Dados.Commit_Tran();
                }

                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_Transferencia.Banco_Dados.RollBack_Tran();
                }

                throw new Exception(ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_Transferencia.deletarBanco_Dados();
                }
            }
        }
コード例 #4
0
 private void gItensNota_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     if (e.ColumnIndex == 0)
     {
         (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar =
             !(bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar;
         //Informar quantidade a devolver
         if ((bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar)
         {
             using (Componentes.TFQuantidade fQtd = new Componentes.TFQuantidade())
             {
                 if (fQtd.ShowDialog() == DialogResult.OK)
                 {
                     fQtd.Vl_default = (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade;
                     fQtd.Ds_label   = "QTD.Devolver";
                     if (fQtd.Quantidade > 0)
                     {
                         (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade =
                             fQtd.Quantidade;
                     }
                     else
                     {
                         MessageBox.Show("Obrigatório informar Quantidade a Devolver!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar = false;
                         return;
                     }
                 }
                 else
                 {
                     MessageBox.Show("Obrigatório informar Quantidade a Devolver!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar = false;
                     return;
                 }
             }
         }
         if ((bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar)
         {
             string           vObsFiscal = string.Empty;
             TList_ImpostosNF lImpostos  = TCN_LanFaturamento_Item.procuraImpostosPorUf((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor,
                                                                                        (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto,
                                                                                        (bsItensNota.Current as TRegistro_LanFaturamento_Item).Vl_basecalcImposto,
                                                                                        (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade,
                                                                                        ref vObsFiscal,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Dt_emissao,
                                                                                        (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_produto,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                                                        (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie,
                                                                                        null);
             if (lImpostos.Count > 0)
             {
                 (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens.Concat(lImpostos);
                 (bsNotaFiscal.Current as TRegistro_LanFaturamento).Obsfiscal += string.IsNullOrEmpty((bsNotaFiscal.Current as TRegistro_LanFaturamento).Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
             }
             else
             {
                 //Verificar se existe imposto icms configurado para o item
                 if (TCN_LanFaturamento_Item.ObrigImformarICMS((bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_produto, (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie, null))
                 {
                     CamadaDados.Diversos.TRegistro_CadAcesso rAcesso = CamadaNegocio.Diversos.TCN_CadAcesso.BuscarDetalhesAcesso(Utils.Parametros.pubLogin, "Fiscal.Cadastros.TFCadCondFiscalICMS");
                     if ((rAcesso != null) || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("MASTER") || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("DESENV"))
                     {
                         //Buscar codigo imposto ICMS
                         object obj = new CamadaDados.Fiscal.TCD_CadImposto().BuscarEscalar(
                             new TpBusca[]
                         {
                             new TpBusca()
                             {
                                 vNM_Campo = "a.st_icms",
                                 vOperador = "=",
                                 vVL_Busca = "0"
                             }
                         }, "a.cd_imposto");
                         //Abrir cadastro de configuracao icms
                         using (Fiscal.Cadastros.TFCondFiscalICMS fCondICMS = new Fiscal.Cadastros.TFCondFiscalICMS())
                         {
                             fCondICMS.pCd_empresa            = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa;
                             fCondICMS.pCd_condfiscal_clifor  = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor;
                             fCondICMS.pCd_condfiscal_produto = (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto;
                             fCondICMS.pCd_movto     = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring;
                             fCondICMS.pCd_UfDest    = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor;
                             fCondICMS.pCd_UfOrig    = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa;
                             fCondICMS.pTp_movimento = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().ToUpper();
                             fCondICMS.pCd_imposto   = obj == null ? string.Empty : obj.ToString();
                             if (fCondICMS.ShowDialog() == DialogResult.OK)
                             {
                                 if ((fCondICMS.rCond != null) &&
                                     (fCondICMS.lMov != null) &&
                                     (fCondICMS.lUfOrigem != null) &&
                                     (fCondICMS.lUfDestino != null))
                                 {
                                     try
                                     {
                                         CamadaNegocio.Fiscal.TCN_CadCondFiscalICMS.Gravar(fCondICMS.rCond,
                                                                                           fCondICMS.lMov,
                                                                                           fCondICMS.lUfOrigem,
                                                                                           fCondICMS.lUfDestino,
                                                                                           null);
                                     }
                                     catch { }
                                 }
                             }
                             vObsFiscal = string.Empty;
                             lImpostos  = TCN_LanFaturamento_Item.procuraImpostosPorUf((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor,
                                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto,
                                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Vl_basecalcImposto,
                                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade,
                                                                                       ref vObsFiscal,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Dt_emissao,
                                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_produto,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie,
                                                                                       null);
                             if (lImpostos.Count > 0)
                             {
                                 (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens.Concat(lImpostos);
                                 (bsNotaFiscal.Current as TRegistro_LanFaturamento).Obsfiscal += string.IsNullOrEmpty((bsNotaFiscal.Current as TRegistro_LanFaturamento).Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                             }
                             bsNotaFiscal.ResetCurrentItem();
                             bsItensNota.ResetCurrentItem();
                         }
                     }
                     else
                     {
                         MessageBox.Show("Não existe condição fiscal para: \r\n" +
                                         "Tipo Movimento: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tipo_movimento.Trim() + "\r\n" +
                                         "Movimentação Comercial: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring.Trim() + " - " +
                                         (bsNotaFiscal.Current as TRegistro_LanFaturamento).Ds_movimentacao.Trim() + "\r\n" +
                                         "Condição Fiscal Clifor: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor.Trim() + "\r\n" +
                                         "Condição Fiscal Produto: " + (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto.Trim() + "\r\n" +
                                         "UF Origem: " + ((bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa) + "\r\n" +
                                         "UF Destino: " + ((bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.Trim().Equals("E") ? (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_empresa : (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_uf_clifor), "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                         (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar = false;
                         bsNotaFiscal.ResetCurrentItem();
                         bsItensNota.ResetCurrentItem();
                     }
                 }
             }
             //Procurar impostos sobre os itens da nota fiscal de destino
             (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens.Concat(
                 TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor,
                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_clifor,
                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_unidade,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Dt_emissao,
                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade,
                                                                       (bsItensNota.Current as TRegistro_LanFaturamento_Item).Vl_basecalcImposto,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                                       (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_municipioexecservico,
                                                                       null));
             //Verificar obrigatoriedade PIS
             if (TCN_LanFaturamento_Item.ObrigInformarPIS((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                          (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                          (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                          (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_modelo.Trim().Equals("55"),
                                                          (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_produto,
                                                          (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens, null))
             {
                 //Verificar se o usuario tem acesso a tela de configuracao do imposto
                 CamadaDados.Diversos.TRegistro_CadAcesso rAcesso = CamadaNegocio.Diversos.TCN_CadAcesso.BuscarDetalhesAcesso(Utils.Parametros.pubLogin, "Fiscal.Cadastros.TFCadCondicaoFiscal_Imposto");
                 if ((rAcesso != null) || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("MASTER") || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("DESENV"))
                 {
                     //Buscar codigo imposto PIS
                     object obj = new CamadaDados.Fiscal.TCD_CadImposto().BuscarEscalar(
                         new TpBusca[]
                     {
                         new TpBusca()
                         {
                             vNM_Campo = "a.st_pis",
                             vOperador = "=",
                             vVL_Busca = "0"
                         }
                     }, "a.cd_imposto");
                     //Abrir cadastro de configuracao icms
                     using (Fiscal.Cadastros.TFCondFiscalImposto fCondImposto = new Fiscal.Cadastros.TFCondFiscalImposto())
                     {
                         fCondImposto.pCd_empresa            = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa;
                         fCondImposto.pCd_condfiscal_clifor  = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor;
                         fCondImposto.pCd_condfiscal_produto = (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto;
                         fCondImposto.pCd_movimentacao       = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring;
                         fCondImposto.pTp_faturamento        = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento;
                         fCondImposto.pSt_juridica           = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper().Equals("J");
                         fCondImposto.pSt_fisica             = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper().Equals("F");
                         fCondImposto.pCd_imposto            = obj == null ? string.Empty : obj.ToString();
                         if (fCondImposto.ShowDialog() == DialogResult.OK)
                         {
                             if ((fCondImposto.rCond != null) &&
                                 (fCondImposto.lMov != null) &&
                                 (fCondImposto.lCondClifor != null) &&
                                 (fCondImposto.lCondProd != null))
                             {
                                 try
                                 {
                                     CamadaNegocio.Fiscal.TCN_CondicaoFiscalImposto.gravarFiscImposto(fCondImposto.rCond,
                                                                                                      fCondImposto.lMov,
                                                                                                      fCondImposto.lCondClifor,
                                                                                                      fCondImposto.lCondProd,
                                                                                                      fCondImposto.pSt_fisica,
                                                                                                      fCondImposto.pSt_juridica,
                                                                                                      fCondImposto.pSt_estrangeiro,
                                                                                                      null);
                                 }
                                 catch { }
                             }
                         }
                         //Procurar impostos sobre os itens da nota fiscal de destino
                         (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens.Concat(
                             TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_clifor,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_unidade,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Dt_emissao,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Vl_basecalcImposto,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_municipioexecservico,
                                                                                   null));
                         bsNotaFiscal.ResetCurrentItem();
                         bsItensNota.ResetCurrentItem();
                     }
                 }
                 else
                 {
                     MessageBox.Show("Falta configuração fiscal do imposto PIS para emitir NFE.\r\n" +
                                     "Imposto: PIS\r\n" +
                                     "Cond. Fiscal Clifor: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor.Trim() + "\r\n" +
                                     "Cond. Fiscal Produto: " + (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto.Trim() + "\r\n" +
                                     "Cd. Movimentação: " + (string.IsNullOrEmpty((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring) ? decimal.Zero : Convert.ToDecimal((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring)) + "\r\n" +
                                     "TP. Pessoa: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper() + "\r\n" +
                                     "TP. Movimento: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.ToString().Trim().ToUpper() + "\r\n" +
                                     "Cd. Empresa: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa.Trim() + "\r\n" +
                                     "Nº Serie: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie.Trim() + "\r\n\r\n" +
                                     "Grave as configurações acima no cadastro de Parametro Geral de Impostos.\r\n" +
                                     "Possivel caminho: FISCAL->CADASTROS->PARAMETO GERAL DE IMPOSTOS.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar = false;
                     bsNotaFiscal.ResetCurrentItem();
                     bsItensNota.ResetCurrentItem();
                 }
             }
             //Verificar obrigatoriedade COFINS
             if (TCN_LanFaturamento_Item.ObrigInformarCOFINS((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                             (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                             (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                             (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_modelo.Trim().Equals("55"),
                                                             (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_produto,
                                                             (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens, null))
             {
                 //Verificar se o usuario tem acesso a tela de configuracao do imposto
                 CamadaDados.Diversos.TRegistro_CadAcesso rAcesso = CamadaNegocio.Diversos.TCN_CadAcesso.BuscarDetalhesAcesso(Utils.Parametros.pubLogin, "Fiscal.Cadastros.TFCadCondicaoFiscal_Imposto");
                 if ((rAcesso != null) || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("MASTER") || Utils.Parametros.pubLogin.Trim().ToUpper().Equals("DESENV"))
                 {
                     //Buscar codigo imposto PIS
                     object obj = new CamadaDados.Fiscal.TCD_CadImposto().BuscarEscalar(
                         new TpBusca[]
                     {
                         new TpBusca()
                         {
                             vNM_Campo = "a.st_cofins",
                             vOperador = "=",
                             vVL_Busca = "0"
                         }
                     }, "a.cd_imposto");
                     //Abrir cadastro de configuracao icms
                     using (Fiscal.Cadastros.TFCondFiscalImposto fCondImposto = new Fiscal.Cadastros.TFCondFiscalImposto())
                     {
                         fCondImposto.pCd_empresa            = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa;
                         fCondImposto.pCd_condfiscal_clifor  = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor;
                         fCondImposto.pCd_condfiscal_produto = (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto;
                         fCondImposto.pCd_movimentacao       = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring;
                         fCondImposto.pTp_faturamento        = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.ToString().Trim().ToUpper();
                         fCondImposto.pSt_juridica           = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper().Equals("J");
                         fCondImposto.pSt_fisica             = (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper().Equals("F");
                         fCondImposto.pCd_imposto            = obj == null ? string.Empty : obj.ToString();
                         if (fCondImposto.ShowDialog() == DialogResult.OK)
                         {
                             if ((fCondImposto.rCond != null) &&
                                 (fCondImposto.lMov != null) &&
                                 (fCondImposto.lCondClifor != null) &&
                                 (fCondImposto.lCondProd != null))
                             {
                                 try
                                 {
                                     CamadaNegocio.Fiscal.TCN_CondicaoFiscalImposto.gravarFiscImposto(fCondImposto.rCond,
                                                                                                      fCondImposto.lMov,
                                                                                                      fCondImposto.lCondClifor,
                                                                                                      fCondImposto.lCondProd,
                                                                                                      fCondImposto.pSt_fisica,
                                                                                                      fCondImposto.pSt_juridica,
                                                                                                      fCondImposto.pSt_estrangeiro,
                                                                                                      null);
                                 }
                                 catch { }
                             }
                         }
                         //Procurar impostos sobre os itens da nota fiscal de destino
                         (bsItensNota.Current as TRegistro_LanFaturamento_Item).ImpostosItens.Concat(
                             TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_clifor,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_unidade,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Dt_emissao,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Quantidade,
                                                                                   (bsItensNota.Current as TRegistro_LanFaturamento_Item).Vl_subtotal,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_nota,
                                                                                   (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_municipioexecservico,
                                                                                   null));
                         bsNotaFiscal.ResetCurrentItem();
                         bsItensNota.ResetCurrentItem();
                     }
                 }
                 else
                 {
                     MessageBox.Show("Falta configuração fiscal do imposto COFINS para emitir NFE.\r\n" +
                                     "Imposto: COFINS\r\n" +
                                     "Cond. Fiscal Clifor: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_condfiscal_clifor.Trim() + "\r\n" +
                                     "Cond. Fiscal Produto: " + (bsItensNota.Current as TRegistro_LanFaturamento_Item).Cd_condfiscal_produto.Trim() + "\r\n" +
                                     "Cd. Movimentação: " + (string.IsNullOrEmpty((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring) ? decimal.Zero : Convert.ToDecimal((bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_movimentacaostring)) + "\r\n" +
                                     "TP. Pessoa: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_pessoa.Trim().ToUpper() + "\r\n" +
                                     "TP. Movimento: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Tp_movimento.ToString().Trim().ToUpper() + "\r\n" +
                                     "Cd. Empresa: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Cd_empresa.Trim() + "\r\n" +
                                     "Nº Serie: " + (bsNotaFiscal.Current as TRegistro_LanFaturamento).Nr_serie.Trim() + "\r\n\r\n" +
                                     "Grave as configurações acima no cadastro de Parametro Geral de Impostos.\r\n" +
                                     "Possivel caminho: FISCAL->CADASTROS->PARAMETO GERAL DE IMPOSTOS.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                     (bsItensNota.Current as TRegistro_LanFaturamento_Item).St_processar = false;
                     bsNotaFiscal.ResetCurrentItem();
                     bsItensNota.ResetCurrentItem();
                 }
             }
             bsItensNota.ResetCurrentItem();
         }
     }
 }
コード例 #5
0
        public static TRegistro_LanFaturamento ProcessarNF(TRegistro_Pedido rPedido)
        {
            //Buscar Configuração Fiscal Pedido
            TList_CadCFGPedidoFiscal lCfgPed = new TCD_CadCFGPedidoFiscal().Select(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cfg_pedido",
                    vOperador = "=",
                    vVL_Busca = "'" + rPedido.CFG_Pedido + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_fiscal",
                    vOperador = "=",
                    vVL_Busca = "'RT'"
                }
            }, 1, string.Empty);

            if (lCfgPed.Count > 0)
            {
                //Buscar Notas Vendas Sem Remessa
                TList_RegLanFaturamento lNFV = new TCD_LanFaturamento().Select(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.nr_pedido",
                        vOperador = "=",
                        vVL_Busca = rPedido.Nr_pedido.ToString()
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.st_registro, 'A')",
                        vOperador = "<>",
                        vVL_Busca = "'C'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(cmi.st_remessatransp, 'N')",
                        vOperador = "<>",
                        vVL_Busca = "'S'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.nr_lanctofiscalRT",
                        vOperador = "is",
                        vVL_Busca = "null"
                    }
                }, 0, string.Empty);
                if (lNFV.Count.Equals(0))
                {
                    throw new Exception("Pedido não possui nota venda disponivel para gerar REMESSA TRANSPORTE.");
                }
                TRegistro_LanFaturamento rNF = null;
                if (lNFV.Count > 1)
                {
                    using (TFListaNF fNF = new TFListaNF())
                    {
                        fNF.lFat = lNFV;
                        if (fNF.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            if (fNF.rFat != null)
                            {
                                rNF = fNF.rFat;
                            }
                        }
                    }
                }
                else
                {
                    rNF = lNFV[0];
                }
                if (rNF == null)
                {
                    throw new Exception("Obrigório selecionar nota fiscal para gerar REMESSA TRANSPORTE.");
                }
                TRegistro_LanFaturamento ret = new TRegistro_LanFaturamento();
                ret.Cd_empresa           = rNF.Cd_empresa;
                ret.Cd_clifor            = !string.IsNullOrEmpty(rPedido.Cd_cliforent) ? rPedido.Cd_cliforent : rNF.Cd_clifor;
                ret.Nm_clifor            = !string.IsNullOrEmpty(rPedido.Nm_cliforent) ? rPedido.Nm_cliforent : rNF.Nm_clifor;
                ret.Cd_endereco          = !string.IsNullOrEmpty(rPedido.Cd_enderecoent) ? rPedido.Cd_enderecoent : rNF.Cd_endereco;
                ret.Cd_cmi               = lCfgPed[0].Cd_cmi;
                ret.Cd_movimentacao      = lCfgPed[0].Cd_movto;
                ret.lCFGFiscal           = lCfgPed;
                ret.Cd_uf_empresa        = rNF.Cd_uf_empresa;
                ret.Uf_empresa           = rNF.Uf_empresa;
                ret.Uf_clifor            = rNF.Uf_clifor;
                ret.Cd_condfiscal_clifor = !string.IsNullOrEmpty(rPedido.Cd_cliforent) ? rPedido.Cd_condfiscalent : rNF.Cd_condfiscal_clifor;
                ret.Cd_uf_clifor         = !string.IsNullOrEmpty(rPedido.Cd_cliforent) ? rPedido.Cd_uf_ent : rNF.Cd_uf_clifor;
                ret.Nr_pedido            = rNF.Nr_pedido;
                ret.Tp_movimento         = rNF.Tp_movimento;
                ret.Tp_pessoa            = rNF.Tp_pessoa;
                ret.Tp_nota              = rNF.Tp_nota;
                ret.Nr_serie             = lCfgPed[0].Nr_serie;
                ret.Cd_modelo            = lCfgPed[0].Cd_modelo;
                ret.St_sequenciaauto     = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
                ret.Dt_emissao           = CamadaDados.UtilData.Data_Servidor();
                ret.Dt_saient            = ret.Dt_emissao;
                ret.Dadosadicionais      = ProcessaAplicacao.BuscarObsMov("D",
                                                                          ret.Cd_movimentacaostring,
                                                                          rNF.Uf_clifor.Trim().Equals(rNF.Uf_empresa.Trim()));
                ret.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F",
                                                               ret.Cd_movimentacaostring,
                                                               rNF.Uf_clifor.Trim().Equals(rNF.Uf_empresa.Trim()));
                ret.Freteporconta        = rNF.Tp_frete;
                ret.Cd_transportadora    = rNF.Cd_transportadora;
                ret.Nm_razaosocialtransp = rNF.Nm_razaosocialtransp;
                ret.Cpf_transp           = rNF.Cpf_transp;
                ret.Placaveiculo         = rNF.Placaveiculo;
                //Abrir tela para capturar dados da nota fiscal
                using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota())
                {
                    fNumero.pCd_empresa       = ret.Cd_empresa;
                    fNumero.pNm_empresa       = ret.Nm_empresa;
                    fNumero.pCd_clifor        = ret.Cd_clifor;
                    fNumero.pNm_clifor        = ret.Nm_clifor;
                    fNumero.pTp_pessoa        = ret.Tp_pessoa;
                    fNumero.pTp_movimento     = ret.Tp_movimento;
                    fNumero.pTp_nota          = ret.Tp_nota;
                    fNumero.pChave_Acesso_NFe = ret.Chave_acesso_nfe;
                    fNumero.pNr_serie         = ret.Nr_serie;
                    fNumero.pDs_serie         = ret.Ds_serienf;
                    fNumero.pCd_modelo        = ret.Cd_modelo;
                    fNumero.pDt_emissao       = ret.Dt_emissao;
                    fNumero.pST_NotaUnica     = false;
                    fNumero.pNr_notafiscal    = ret.Nr_notafiscal.HasValue ? ret.Nr_notafiscal.Value.ToString() : string.Empty;
                    fNumero.pDt_saient        = ret.Dt_saient;
                    fNumero.pDs_dadosadic     = ret.Dadosadicionais;
                    fNumero.pDs_obsfiscal     = ret.Obsfiscal;
                    fNumero.pSt_sequenciaauto = ret.St_sequenciaauto;
                    fNumero.pCd_movto         = ret.Cd_movimentacaostring;
                    fNumero.pCd_cmi           = ret.Cd_cmistring;
                    fNumero.pSt_servico       = lCfgPed.Count > 0 ? lCfgPed[0].St_servico : false;
                    if (ret.Tp_nota.Trim().ToUpper().Equals("T"))
                    {
                        //Buscar inscricao estadual do clifor da nota
                        object obj_insc = new TCD_CadEndereco().BuscarEscalar(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "a.cd_clifor",
                                vOperador = "=",
                                vVL_Busca = "'" + ret.Cd_clifor.Trim() + "'"
                            },
                            new TpBusca()
                            {
                                vNM_Campo = "a.cd_endereco",
                                vOperador = "=",
                                vVL_Busca = "'" + ret.Cd_endereco.Trim() + "'"
                            }
                        }, "a.insc_estadual");
                        fNumero.pInsc_estadual = obj_insc == null ? string.Empty : obj_insc.ToString();
                    }
                    fNumero.pTp_frete          = ret.Freteporconta;
                    fNumero.pCd_transportadora = ret.Cd_transportadora;
                    fNumero.pNm_transportadora = ret.Nm_razaosocialtransp;
                    fNumero.pCnpjCpfTransp     = ret.Cpf_transp;
                    fNumero.pPlacaVeiculo      = ret.Placaveiculo;
                    fNumero.pVl_frete          = rNF.ItensNota.Sum(p => p.Vl_freteitem);
                    if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        ret.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe;
                        if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal))
                        {
                            ret.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal);
                        }
                        else
                        {
                            ret.Nr_notafiscal = null;
                        }
                        ret.Nr_serie             = fNumero.pNr_serie;
                        ret.Cd_modelo            = fNumero.pCd_modelo;
                        ret.Dt_emissao           = fNumero.pDt_emissao;
                        ret.Dt_saient            = fNumero.pDt_saient;
                        ret.Obsfiscal            = fNumero.pDs_obsfiscal;
                        ret.Dadosadicionais      = fNumero.pDs_dadosadic;
                        ret.Cd_transportadora    = fNumero.pCd_transportadora;
                        ret.Cd_enderecotransp    = fNumero.pCd_endtransportadora;
                        ret.Nm_razaosocialtransp = fNumero.pNm_transportadora;
                        ret.Cpf_transp           = fNumero.pCnpjCpfTransp;
                        ret.Placaveiculo         = fNumero.pPlacaVeiculo;
                        ret.Freteporconta        = fNumero.pTp_frete;
                        ret.Especie                 = fNumero.pEspecie;
                        ret.Quantidade              = fNumero.pQuantidade;
                        ret.Pesobruto               = fNumero.pPsbruto;
                        ret.Pesoliquido             = fNumero.pPsliquido;
                        ret.Vl_frete                = fNumero.pVl_frete;
                        ret.Cd_municipioexecservico = fNumero.pCd_municipioexecservico;
                        ret.Ds_municipioexecservico = fNumero.pNm_municipioexecservico;
                        //Preencher objeto CMI
                        CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                            CamadaNegocio.Fiscal.TCN_CadCMI.Busca(fNumero.pCd_cmi,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  false,
                                                                  false,
                                                                  false,
                                                                  false,
                                                                  false,
                                                                  false,
                                                                  false,
                                                                  null)[0];
                        ret.Cminf.Add(new TRegistro_LanFaturamento_CMI()
                        {
                            St_compdevimposto = rCmi.St_compdevimposto,
                            St_complementar   = rCmi.St_complementar,
                            St_devolucao      = rCmi.St_devolucao,
                            St_geraestoque    = rCmi.St_geraestoque,
                            St_mestra         = rCmi.St_mestra,
                            St_simplesremessa = rCmi.St_simplesremessa,
                            St_retorno        = rCmi.St_retorno,
                            St_remessatransp  = "S"
                        });
                        ret.Cd_cmistring   = fNumero.pCd_cmi;
                        ret.Ds_cmi         = rCmi.Ds_cmi;
                        ret.Tp_duplicata   = rCmi.Tp_duplicata;
                        ret.Ds_tpduplicata = rCmi.ds_tpduplicata;
                    }
                    else
                    {
                        throw new Exception("Obrigatorio informar numero da nota fiscal.");
                    }
                }
                if (ret.Nr_notafiscal.HasValue)
                {
                    TRegistro_LanFaturamento rFat = TCN_LanFaturamento.existeNumeroNota(ret.Nr_notafiscal.ToString(),
                                                                                        ret.Nr_serie,
                                                                                        ret.Cd_empresa,
                                                                                        ret.Cd_clifor,
                                                                                        string.Empty,
                                                                                        ret.Tp_nota,
                                                                                        null);
                    if (rFat != null)
                    {
                        if (rFat.St_registro.Trim().ToUpper().Equals("C"))
                        {
                            throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra cancelada.\r\n" +
                                                "Para poder utilizar o mesmo numero e necessario excluir a nota fiscal cancelada.\r\n" +
                                                "Dica: Menu FATURAMENTO->Emissão de Notas Fiscais / NFe, localize a nota fiscal cancelada e exclua a mesma.\r\n" +
                                                "Obs.: Para excluir a nota fiscal cancelada é necessario que o usuario tenha permissão.");
                        }
                        else
                        {
                            throw new Exception("Nota Fiscal Nº " + rFat.Nr_notafiscal.ToString() + " ja existe no sistema e se encontra ativa.\r\n" +
                                                "Não é permitido gerar nota fiscal com mesmo numero.");
                        }
                    }
                }
                TCN_LanFaturamento_Item.Busca(rNF.Cd_empresa,
                                              rNF.Nr_lanctofiscal.Value.ToString(),
                                              string.Empty,
                                              null).ForEach(item =>
                {
                    TRegistro_LanFaturamento_Item rItem = new TRegistro_LanFaturamento_Item();
                    rItem.Cd_empresa            = rNF.Cd_empresa;
                    rItem.Cd_produto            = item.Cd_produto;
                    rItem.Cd_local              = item.Cd_local;
                    rItem.Cd_condfiscal_produto = item.Cd_condfiscal_produto;
                    rItem.Cd_unidade            = item.Cd_unidade;
                    rItem.Cd_unidEst            = item.Cd_unidEst;
                    rItem.Nr_pedido             = item.Nr_pedido;
                    rItem.Id_pedidoitem         = item.Id_pedidoitem;
                    rItem.Quantidade            = item.Quantidade;
                    rItem.Quantidade_estoque    = item.Quantidade;
                    rItem.Vl_subtotal           = item.Vl_subtotal;
                    rItem.Vl_subtotal_estoque   = item.Vl_subtotal;
                    rItem.Vl_unitario           = item.Vl_unitario;
                    rItem.Pc_desconto           = item.Pc_desconto;
                    rItem.Vl_desconto           = item.Vl_desconto;
                    rItem.Vl_freteitem          = item.Vl_freteitem;
                    rItem.Pc_juro_fin           = item.Pc_juro_fin;
                    rItem.Vl_juro_fin           = item.Vl_juro_fin;
                    rItem.Vl_outrasdesp         = item.Vl_outrasdesp;
                    rItem.Pc_imposto_Aprox      = item.Pc_imposto_Aprox;
                    rItem.Observacao_item       = item.Observacao_item;
                    //Buscar cfop do item
                    TRegistro_CadCFOP rCfop = null;
                    if (TCN_Mov_X_CFOP.BuscarCFOP(ret.Cd_movimentacaostring,
                                                  item.Cd_condfiscal_produto,
                                                  ret.Cd_uf_clifor.Trim().Equals("99") ? "I" : ret.Cd_uf_clifor.Trim().Equals(ret.Cd_uf_empresa.Trim()) ? "D" : "F",
                                                  (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Cd_uf_clifor : ret.Cd_uf_empresa),
                                                  (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Cd_uf_empresa : ret.Cd_uf_clifor),
                                                  ret.Tp_movimento,
                                                  ret.Cd_condfiscal_clifor,
                                                  ret.Cd_empresa,
                                                  ref rCfop,
                                                  null))
                    {
                        rItem.Cd_cfop        = rCfop.CD_CFOP;
                        rItem.Ds_cfop        = rCfop.DS_CFOP;
                        rItem.St_bonificacao = rCfop.St_bonificacaobool;
                    }
                    else
                    {
                        throw new Exception("Não existe CFOP " + (ret.Cd_uf_clifor.Trim().Equals("99") ? "I" : ret.Cd_uf_clifor.Trim().Equals(ret.Cd_uf_empresa.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + ret.Cd_movimentacaostring + " condição fiscal do produto " + item.Cd_condfiscal_produto);
                    }
                    //Procurar Impostos Estaduais para o Item
                    string vObsFiscal       = string.Empty;
                    TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(ret.Cd_empresa,
                                                                                           (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Cd_uf_clifor : ret.Cd_uf_empresa),
                                                                                           (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Cd_uf_empresa : ret.Cd_uf_clifor),
                                                                                           ret.Cd_movimentacaostring,
                                                                                           ret.Tp_movimento,
                                                                                           ret.Cd_condfiscal_clifor,
                                                                                           rItem.Cd_condfiscal_produto,
                                                                                           rItem.Vl_subtotal,
                                                                                           rItem.Quantidade,
                                                                                           ref vObsFiscal,
                                                                                           ret.Dt_emissao,
                                                                                           rItem.Cd_produto,
                                                                                           ret.Tp_nota,
                                                                                           ret.Nr_serie,
                                                                                           null);
                    if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                    {
                        TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem);
                        ret.Obsfiscal += vObsFiscal.Trim();
                    }
                    else if (TCN_LanFaturamento_Item.ObrigImformarICMS(rItem.Cd_produto, ret.Nr_serie, null))
                    {
                        throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" +
                                            "Tipo Movimento: " + ret.Tipo_movimento.Trim() + "\r\n" +
                                            "Movimentação: " + ret.Cd_movimentacao.ToString() + "\r\n" +
                                            "Cond. Fiscal Clifor: " + ret.Cd_condfiscal_clifor.Trim() + "\r\n" +
                                            "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" +
                                            "UF Origem: " + (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Uf_clifor.Trim() : ret.Uf_empresa.Trim()) + "\r\n" +
                                            "UF Destino: " + (ret.Tp_movimento.Trim().ToUpper().Equals("E") ? ret.Uf_empresa.Trim() : ret.Uf_clifor.Trim()));
                    }

                    //Procurar impostos sobre os itens da nota fiscal de destino
                    TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                        TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(ret.Cd_condfiscal_clifor,
                                                                              rItem.Cd_condfiscal_produto,
                                                                              ret.Cd_movimentacaostring,
                                                                              ret.Tp_movimento,
                                                                              ret.Tp_pessoa,
                                                                              ret.Cd_empresa,
                                                                              ret.Nr_serie,
                                                                              ret.Cd_clifor,
                                                                              rItem.Cd_unidEst,
                                                                              ret.Dt_emissao,
                                                                              rItem.Quantidade,
                                                                              rItem.Vl_subtotal,
                                                                              ret.Tp_nota,
                                                                              ret.Cd_municipioexecservico,
                                                                              null), rItem, ret.Tp_movimento);
                    string obs_ret = string.Empty;
                    string linha   = string.Empty;
                    if (rItem.Vl_ICMSRetido > decimal.Zero)
                    {
                        obs_ret += linha + "ICMS RETIDO " + rItem.Vl_ICMSRetido.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoCofins > decimal.Zero)
                    {
                        obs_ret += linha + "COFINS RETIDO " + rItem.Vl_retidoCofins.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoCSLL > decimal.Zero)
                    {
                        obs_ret += linha + "CSLL RETIDO " + rItem.Vl_retidoCSLL.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoFunrural > decimal.Zero)
                    {
                        obs_ret += linha + "FUNRURAL RETIDO " + rItem.Vl_retidoFunrural.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoINSS > decimal.Zero)
                    {
                        obs_ret += linha + "INSS RETIDO " + rItem.Vl_retidoINSS.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoIRRF > decimal.Zero)
                    {
                        obs_ret += linha + "IRFF RETIDO " + rItem.Vl_retidoIRRF.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoPIS > decimal.Zero)
                    {
                        obs_ret += linha + "PIS RETIDO " + rItem.Vl_retidoPIS.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (rItem.Vl_retidoSenar > decimal.Zero)
                    {
                        obs_ret += linha + "SENAR RETIDO " + rItem.Vl_retidoSenar.ToString("C2", new System.Globalization.CultureInfo("pt-BR"));
                        linha    = "\r\n";
                    }
                    if (!string.IsNullOrEmpty(obs_ret))
                    {
                        ret.Obsfiscal += (string.IsNullOrEmpty(ret.Obsfiscal) ? string.Empty : "\r\n") + obs_ret.Trim();
                    }
                    ret.ItensNota.Add(rItem);
                });
                ret.rNFVendaRT = rNF;
                return(ret);
            }
            else
            {
                throw new Exception("Não existe configuração fiscal pedido para gerar REMESSA TRANSPORTE.");
            }
        }