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 }
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; } } }
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(); } } }
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(); } } }
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."); } }