private bool VerificarCfgFiscalPedido() { if (!string.IsNullOrEmpty(CFG_Pedido.Text)) { object obj = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + CFG_Pedido.Text.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'NO'" } }, "1"); return(obj == null ? false : obj.ToString().Trim().Equals("1")); } else { return(false); } }
public static CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessarEmpreendimento(string tp_nota, string Cd_clifor, TRegistro_Orcamento rOrcamento, List <TRegistro_FichaTec> rFicha) { // TP_NOTA S SERVICO N NORMAL if (new TCD_CadCFGEmpreendimento().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rOrcamento.Cd_empresa.Trim() + "'" } }, "a.cfg_remessa", string.Empty, string.Empty, null) == null) { throw new Exception("Não existe configuração para emitir NF peças para a empresa " + rOrcamento.Cd_empresa.Trim()); } //Buscar configuracao fiscal do pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal(); if (tp_nota.Equals("N")) { lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from TB_EMP_CFGEmpreendimento x " + "where a.cfg_pedido = x.cfg_remessa " + "and x.cd_empresa = '" + rOrcamento.Cd_empresa.Trim() + "')" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'NO'" } }, 1, string.Empty); } if (tp_nota.Equals("S")) { lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from TB_EMP_CFGEmpreendimento x " + "where a.cfg_pedido = x.cfg_servico " + "and x.cd_empresa = '" + rOrcamento.Cd_empresa.Trim() + "')" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'SE'" } }, 1, string.Empty); } if (lCfgPed.Count.Equals(0)) { throw new Exception("Não existe configuração fiscal do pedido para o tipo pedido!"); } //Objeto Nota Fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNf = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); //Buscar registro empresa CamadaDados.Diversos.TRegistro_CadEmpresa rEmpresa = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rOrcamento.Cd_empresa, string.Empty, string.Empty, null)[0]; rNf.Cd_empresa = rEmpresa.Cd_empresa; rNf.Cd_uf_empresa = rEmpresa.rEndereco.Cd_uf; rNf.Uf_empresa = rEmpresa.rEndereco.UF; //Buscar registro clifor CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor rCliente = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(Cd_clifor, null); rNf.Cd_clifor = rCliente.Cd_clifor; rNf.Cd_condfiscal_clifor = rCliente.Cd_condfiscal_clifor; //Buscar endereco cliente CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco rEndereco = CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(Cd_clifor, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null)[0]; rNf.Cd_endereco = rEndereco.Cd_endereco; rNf.Cd_uf_clifor = rEndereco.Cd_uf; rNf.Uf_clifor = rEndereco.UF; rNf.Cd_cmi = lCfgPed[0].Cd_cmi; rNf.Cd_movimentacao = lCfgPed[0].Cd_movto; rNf.lCFGFiscal = lCfgPed; rNf.Tp_duplicata = lCfgPed[0].Tp_duplicata; rNf.Ds_tpduplicata = lCfgPed[0].Ds_tpduplicata; rNf.Cd_condpgto = lCfgPed[0].CD_CondPgto; rNf.Tp_movimento = "S"; rNf.Tp_pessoa = rCliente.Tp_pessoa; rNf.Tp_nota = (rNf.Tp_pessoa.Trim().ToUpper().Equals("J") && rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? "T" : "P"); rNf.Nr_serie = lCfgPed[0].Nr_serie; rNf.Cd_modelo = lCfgPed[0].Cd_modelo; rNf.St_sequenciaauto = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); rNf.Dt_emissao = CamadaDados.UtilData.Data_Servidor(); rNf.Dt_saient = rNf.Dt_emissao; rNf.Dadosadicionais = ProcessaAplicacao.BuscarObsMov("D", rNf.Cd_movimentacaostring, rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim())); rNf.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F", rNf.Cd_movimentacaostring, rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim())); //Abrir tela para capturar dados da nota fiscal using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota()) { 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.pTp_movimento = rNf.Tp_movimento; fNumero.pCd_municipioexecservico = rOrcamento.Cd_cidadeemp; fNumero.pNm_municipioexecservico = rOrcamento.Ds_cidadeemp; fNumero.pTp_nota = rNf.Tp_nota; fNumero.pChave_Acesso_NFe = rNf.Chave_acesso_nfe; fNumero.pNr_serie = rNf.Nr_serie; fNumero.pDs_serie = rNf.Ds_serienf; fNumero.pCd_modelo = rNf.Cd_modelo; fNumero.pDt_emissao = rNf.Dt_emissao; fNumero.pST_NotaUnica = false; fNumero.pNr_notafiscal = rNf.Nr_notafiscal.HasValue ? rNf.Nr_notafiscal.Value.ToString() : string.Empty; fNumero.pDt_saient = rNf.Dt_saient; fNumero.pDs_dadosadic = rNf.Dadosadicionais; fNumero.pDs_obsfiscal = rNf.Obsfiscal; fNumero.pSt_sequenciaauto = rNf.St_sequenciaauto; fNumero.pCd_movto = rNf.Cd_movimentacaostring; fNumero.pCd_cmi = rNf.Cd_cmistring; if (rNf.Tp_nota.Trim().ToUpper().Equals("T")) { fNumero.pInsc_estadual = rEndereco.Insc_estadual; } if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rNf.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal)) { rNf.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal); } else { rNf.Nr_notafiscal = null; } rNf.Nr_serie = fNumero.pNr_serie; rNf.Cd_modelo = fNumero.pCd_modelo; rNf.Dt_emissao = fNumero.pDt_emissao; rNf.Dt_saient = fNumero.pDt_saient; rNf.Obsfiscal = fNumero.pDs_obsfiscal; rNf.Dadosadicionais = fNumero.pDs_dadosadic; rNf.Cd_transportadora = fNumero.pCd_transportadora; rNf.Nm_razaosocialtransp = fNumero.pNm_transportadora; rNf.Cpf_transp = fNumero.pCnpjCpfTransp; rNf.Placaveiculo = fNumero.pPlacaVeiculo; rNf.Tp_frete = fNumero.pTp_frete; rNf.Especie = fNumero.pEspecie; rNf.Quantidade = fNumero.pQuantidade; rNf.Pesobruto = fNumero.pPsbruto; rNf.Pesoliquido = fNumero.pPsliquido; rNf.Vl_frete = fNumero.pVl_frete; 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]; rNf.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.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 }); rNf.Cd_cmistring = fNumero.pCd_cmi; rNf.Ds_cmi = rCmi.Ds_cmi; rNf.Tp_duplicata = rCmi.Tp_duplicata; rNf.Ds_tpduplicata = rCmi.ds_tpduplicata; } else { throw new Exception("Obrigatorio informar numero da nota fiscal."); } } if (rNf.Nr_notafiscal.HasValue) { CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNf.Nr_notafiscal.ToString(), rNf.Nr_serie, rNf.Cd_empresa, rNf.Cd_clifor, string.Empty, rNf.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."); } } } //Itens da Nota rFicha.ForEach(item => { CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item(); rItem.Cd_empresa = item.Cd_empresa; rItem.Cd_produto = item.Cd_produto; //pega cd condfiscal do produto object cd_cfiscal = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar(new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = item.Cd_produto } }, "d.cd_condfiscal_produto"); TList_CadCFGEmpreendimento cfg = TCN_CadCFGEmpreendimento.Busca(item.Cd_empresa, string.Empty, null); object ncmm = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + item.Cd_produto.Trim() + "'" } }, "isnull(a.ncm, 0)"); if (ncmm != null) { if (!string.IsNullOrEmpty(ncmm.ToString())) { object obj_imp = new CamadaDados.Fiscal.TCD_CadNCM().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.ncm", vOperador = "=", vVL_Busca = "'" + ncmm.ToString().Trim() + "'" } }, "isnull(a.Pc_Aliquota, 0)"); if (obj_imp != null) { if (!string.IsNullOrEmpty(obj_imp.ToString())) { rItem.Pc_imposto_Aprox = Convert.ToDecimal(obj_imp.ToString()); } } } } //buscar cdunidade rItem.Cd_condfiscal_produto = cd_cfiscal != null ?cd_cfiscal.ToString() : string.Empty; rItem.Cd_unidade = item.Cd_unidade; rItem.Cd_local = cfg[0].cd_local; rItem.Cd_unidEst = item.Cd_unidade; rItem.Quantidade = item.quantidade_agregar; rItem.Quantidade_estoque = item.quantidade_agregar; rItem.Vl_subtotal = item.quantidade_agregar * item.Vl_unitario; rItem.Vl_subtotal_estoque = item.quantidade_agregar * item.Vl_unitario; rItem.Vl_unitario = item.Vl_unitario; //Buscar cfop do item CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; bool st_dentroestado = rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim()); if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNf.Cd_movimentacaostring, rItem.Cd_condfiscal_produto, rEndereco.Cd_uf.Trim().Equals("99") ? "I" : rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim()) ? "D" : "F", (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rNf.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 " + (rEndereco.Cd_uf.Trim().Equals("99") ? "internacional" : rEndereco.Cd_uf.Trim().Equals(rEmpresa.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; CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNf.Cd_empresa, (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rItem.Vl_subtotal, rItem.Quantidade, ref vObsFiscal, rNf.Dt_emissao, rItem.Cd_produto, rNf.Tp_nota, rNf.Nr_serie, null); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem); rNf.Obsfiscal += vObsFiscal.Trim(); } else if (CamadaNegocio.Faturamento.NotaFiscal.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: " + rNf.Tipo_movimento.Trim() + "\r\n" + "Movimentação: " + rNf.Cd_movimentacao.ToString() + "\r\n" + "Cond. Fiscal Clifor: " + rNf.Cd_condfiscal_clifor.Trim() + "\r\n" + "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" + "UF Origem: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" + "UF Destino: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim())); } //Procurar impostos sobre os itens da nota fiscal de destino CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos( CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Tp_pessoa, rNf.Cd_empresa, rNf.Nr_serie, rNf.Cd_clifor, rItem.Cd_unidEst, rNf.Dt_emissao, rItem.Quantidade, rItem.Vl_subtotal, rNf.Tp_nota, rNf.Cd_municipioexecservico, null), rItem, rNf.Tp_movimento); rItem.rItemFichaTec = item; rNf.ItensNota.Add(rItem); }); return(rNf); }
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 CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessaVRVendaFutura(CamadaDados.Faturamento.PDV.TRegistro_VendaRapida rVenda, CamadaDados.Faturamento.NotaFiscal.TList_LanFat_ComplementoDevolucao lNfM) { //Buscar pedido entrega futura CamadaDados.Faturamento.Pedido.TList_Pedido lPed = new CamadaDados.Faturamento.Pedido.TCD_Pedido().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_notafiscal_item x " + "where x.nr_pedido = a.nr_pedido " + "and x.cd_empresa = '" + lNfM[0].Cd_empresa.Trim() + "' " + "and x.nr_lanctofiscal = " + lNfM[0].Nr_lanctofiscal_origem.Value.ToString() + " " + "and x.id_nfitem = " + lNfM[0].Id_nfitem_origem.Value.ToString() + ")" } }, 1, string.Empty); if (lPed.Count > 0) { //Buscar configuracao fiscal entrega futura CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'NO'" }, new TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + lPed[0].CFG_Pedido.Trim() + "'" } }, 1, string.Empty); if (lCfgPed.Count > 0) { //Objeto Nota Fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNf = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); rNf.Cd_empresa = lPed[0].CD_Empresa; rNf.Cd_clifor = lPed[0].CD_Clifor; rNf.Nm_clifor = lPed[0].NM_Clifor; rNf.Cd_endereco = lPed[0].CD_Endereco; rNf.Cd_cmi = lCfgPed[0].Cd_cmi; rNf.Cd_movimentacao = lCfgPed[0].Cd_movto; rNf.lCFGFiscal = lCfgPed; rNf.Cd_uf_empresa = lPed[0].Cd_uf_empresa; rNf.Uf_empresa = lPed[0].Uf_empresa; rNf.Cd_uf_clifor = lPed[0].Cd_uf_cliente; rNf.Uf_clifor = lPed[0].UF_Cliente; rNf.Cd_condfiscal_clifor = lPed[0].Cd_condfiscal_clifor; rNf.Tp_duplicata = lCfgPed[0].Tp_duplicata; rNf.Ds_tpduplicata = lCfgPed[0].Ds_tpduplicata; rNf.Cd_condpgto = lCfgPed[0].CD_CondPgto; rNf.Nr_pedido = lPed[0].Nr_pedido; rNf.Tp_movimento = "S"; rNf.Tp_pessoa = lPed[0].Tp_pessoa; rNf.Tp_nota = "P"; rNf.Nr_serie = lCfgPed[0].Nr_serie; rNf.Cd_modelo = lCfgPed[0].Cd_modelo; rNf.St_sequenciaauto = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); rNf.Dt_emissao = CamadaDados.UtilData.Data_Servidor(); rNf.Dt_saient = rNf.Dt_emissao; rNf.Dadosadicionais = ProcessaAplicacao.BuscarObsMov("D", rNf.Cd_movimentacaostring, lPed[0].UF_Cliente.Trim().Equals(lPed[0].Uf_empresa.Trim())); rNf.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F", rNf.Cd_movimentacaostring, lPed[0].UF_Cliente.Trim().Equals(lPed[0].Uf_empresa.Trim())); if (rNf.Tp_nota.Trim().ToUpper().Equals("T") || (!rNf.St_sequenciaauto)) { //Abrir tela para capturar dados da nota fiscal using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota()) { 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.pTp_movimento = rNf.Tp_movimento; fNumero.pTp_nota = rNf.Tp_nota; fNumero.pChave_Acesso_NFe = rNf.Chave_acesso_nfe; fNumero.pNr_serie = rNf.Nr_serie; fNumero.pDs_serie = rNf.Ds_serienf; fNumero.pCd_modelo = rNf.Cd_modelo; fNumero.pDt_emissao = rNf.Dt_emissao; fNumero.pST_NotaUnica = false; fNumero.pNr_notafiscal = rNf.Nr_notafiscal.HasValue ? rNf.Nr_notafiscal.Value.ToString() : string.Empty; fNumero.pDt_saient = rNf.Dt_saient; fNumero.pDs_dadosadic = rNf.Dadosadicionais; fNumero.pDs_obsfiscal = rNf.Obsfiscal; fNumero.pSt_sequenciaauto = rNf.St_sequenciaauto; fNumero.pCd_movto = rNf.Cd_movimentacaostring; fNumero.pCd_cmi = rNf.Cd_cmistring; if (rNf.Tp_nota.Trim().ToUpper().Equals("T")) { //Buscar inscricao estadual do clifor da nota object obj_insc = 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"); fNumero.pInsc_estadual = obj_insc == null ? string.Empty : obj_insc.ToString(); } if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rNf.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal)) { rNf.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal); } else { rNf.Nr_notafiscal = null; } rNf.Nr_serie = fNumero.pNr_serie; rNf.Cd_modelo = fNumero.pCd_modelo; rNf.Dt_emissao = fNumero.pDt_emissao; rNf.Dt_saient = fNumero.pDt_saient; rNf.Obsfiscal = fNumero.pDs_obsfiscal; rNf.Dadosadicionais = fNumero.pDs_dadosadic; rNf.Cd_transportadora = fNumero.pCd_transportadora; rNf.Nm_razaosocialtransp = fNumero.pNm_transportadora; rNf.Cpf_transp = fNumero.pCnpjCpfTransp; rNf.Placaveiculo = fNumero.pPlacaVeiculo; rNf.Tp_frete = fNumero.pTp_frete; rNf.Especie = fNumero.pEspecie; rNf.Quantidade = fNumero.pQuantidade; rNf.Pesobruto = fNumero.pPsbruto; rNf.Pesoliquido = fNumero.pPsliquido; rNf.Vl_frete = fNumero.pVl_frete; if (rNf.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]; rNf.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.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 }); rNf.Cd_cmistring = fNumero.pCd_cmi; rNf.Ds_cmi = rCmi.Ds_cmi; rNf.Tp_duplicata = rCmi.Tp_duplicata; rNf.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal."); } } } if (rNf.Nr_notafiscal.HasValue) { CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNf.Nr_notafiscal.ToString(), rNf.Nr_serie, rNf.Cd_empresa, rNf.Cd_clifor, string.Empty, rNf.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."); } } } rVenda.lItem.ForEach(item => { //Buscar item pedido object obj = new CamadaDados.Faturamento.Pedido.TCD_LanPedido_Item().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = lPed[0].Nr_pedido.ToString() }, new TpBusca() { vNM_Campo = "a.cd_produto", vOperador = "=", vVL_Busca = "'" + item.Cd_produto.Trim() + "'" } }, "a.id_pedidoitem"); //Item da nota fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item(); rItem.Cd_empresa = rVenda.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_unidade; rItem.Nr_pedido = lPed[0].Nr_pedido; rItem.Id_pedidoitem = decimal.Parse(obj.ToString()); 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; //Buscar cfop do item CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNf.Cd_movimentacaostring, item.Cd_condfiscal_produto, lPed[0].Cd_uf_cliente.Trim().Equals("99") ? "I" : lPed[0].Cd_uf_cliente.Trim().Equals(lPed[0].Cd_uf_empresa.Trim()) ? "D" : "F", (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rNf.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 " + (lPed[0].Cd_uf_cliente.Trim().Equals("99") ? "internacional" : lPed[0].Cd_uf_cliente.Trim().Equals(lPed[0].Cd_uf_empresa.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; CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNf.Cd_empresa, (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rItem.Vl_subtotal, rItem.Quantidade, ref vObsFiscal, rNf.Dt_emissao, rItem.Cd_produto, rNf.Tp_nota, rNf.Nr_serie, null); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem); rNf.Obsfiscal += vObsFiscal.Trim(); } else if (CamadaNegocio.Faturamento.NotaFiscal.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: " + rNf.Tipo_movimento.Trim() + "\r\n" + "Movimentação: " + rNf.Cd_movimentacao.ToString() + "\r\n" + "Cond. Fiscal Clifor: " + rNf.Cd_condfiscal_clifor.Trim() + "\r\n" + "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" + "UF Origem: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" + "UF Destino: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim())); } //Procurar impostos sobre os itens da nota fiscal de destino CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos( CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Tp_pessoa, rNf.Cd_empresa, rNf.Nr_serie, rNf.Cd_clifor, rItem.Cd_unidEst, rNf.Dt_emissao, rItem.Quantidade, rItem.Vl_subtotal, rNf.Tp_nota, rNf.Cd_municipioexecservico, null), rItem, rNf.Tp_movimento); //Incluir Nota Mestra rItem.lNfcompdev = lNfM; //Observação do Item com os dados das notas de origem string obsitem = string.Empty; lNfM.ForEach(p => obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') + (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("pt-BR")) + item.Sigla_unidade.Trim()).FormatStringDireita(15, ' ') + p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("pt-BR")).FormatStringDireita(12, ' ') + "\r\n"); rItem.Observacao_item += "NF/Serie Origem Quantidade Valor(R$)\r\n" + obsitem; rNf.ItensNota.Add(rItem); }); return(rNf); } else { throw new Exception("Não existe configuração fiscal para o pedido Nº" + lPed[0].Nr_pedido.ToString()); } } else { throw new Exception("Pedido não localizado."); } }
public static CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessarNfDevolucao(string Cd_clifor, List <CamadaDados.Faturamento.PDV.TRegistro_ItensCondicional> lItens) { if (new CamadaDados.Faturamento.Cadastros.TCD_CFGCupomFiscal().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + lItens[0].Cd_empresa.Trim() + "'" } }, "a.cfg_pedcondicional") == null) { throw new Exception("Não existe configuração para emitir NF Condicional para a empresa " + lItens[0].Cd_empresa.Trim()); } //Buscar configuracao fiscal do pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from TB_PDV_CFGCupomFiscal x " + "where a.cfg_pedido = x.cfg_pedcondicional " + "and x.cd_empresa = '" + lItens[0].Cd_empresa.Trim() + "')" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'DV'" } }, 1, string.Empty); if (lCfgPed.Count.Equals(0)) { throw new Exception("Não existe configuração fiscal de devolução para o tipo pedido condicional."); } //Objeto Nota Fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNf = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); //Buscar registro empresa CamadaDados.Diversos.TRegistro_CadEmpresa rEmpresa = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(lItens[0].Cd_empresa, string.Empty, string.Empty, null)[0]; rNf.Cd_empresa = rEmpresa.Cd_empresa; rNf.Cd_uf_empresa = rEmpresa.rEndereco.Cd_uf; rNf.Uf_empresa = rEmpresa.rEndereco.UF; //Buscar registro clifor CamadaDados.Financeiro.Cadastros.TRegistro_CadClifor rCliente = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(Cd_clifor, null); rNf.Cd_clifor = rCliente.Cd_clifor; rNf.Cd_condfiscal_clifor = rCliente.Cd_condfiscal_clifor; //Buscar endereco cliente CamadaDados.Financeiro.Cadastros.TRegistro_CadEndereco rEndereco = CamadaNegocio.Financeiro.Cadastros.TCN_CadEndereco.Buscar(Cd_clifor, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, 1, null)[0]; rNf.Cd_endereco = rEndereco.Cd_endereco; rNf.Cd_uf_clifor = rEndereco.Cd_uf; rNf.Uf_clifor = rEndereco.UF; rNf.Cd_cmi = lCfgPed[0].Cd_cmi; rNf.Cd_movimentacao = lCfgPed[0].Cd_movto; rNf.lCFGFiscal = lCfgPed; rNf.Tp_duplicata = lCfgPed[0].Tp_duplicata; rNf.Ds_tpduplicata = lCfgPed[0].Ds_tpduplicata; rNf.Cd_condpgto = lCfgPed[0].CD_CondPgto; rNf.Tp_movimento = "E"; rNf.Tp_pessoa = rCliente.Tp_pessoa; rNf.Tp_nota = (rNf.Tp_pessoa.Trim().ToUpper().Equals("J") && rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? "T" : "P"); rNf.Nr_serie = lCfgPed[0].Nr_serie; rNf.Cd_modelo = lCfgPed[0].Cd_modelo; rNf.St_sequenciaauto = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); rNf.Dt_emissao = CamadaDados.UtilData.Data_Servidor(); rNf.Dt_saient = rNf.Dt_emissao; rNf.Dadosadicionais = ProcessaAplicacao.BuscarObsMov("D", rNf.Cd_movimentacaostring, rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim())); rNf.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F", rNf.Cd_movimentacaostring, rEndereco.UF.Trim().Equals(rEmpresa.rEndereco.UF.Trim())); //Abrir tela para capturar dados da nota fiscal using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota()) { 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.pTp_movimento = rNf.Tp_movimento; fNumero.pTp_nota = rNf.Tp_nota; fNumero.pChave_Acesso_NFe = rNf.Chave_acesso_nfe; fNumero.pNr_serie = rNf.Nr_serie; fNumero.pDs_serie = rNf.Ds_serienf; fNumero.pCd_modelo = rNf.Cd_modelo; fNumero.pDt_emissao = rNf.Dt_emissao; fNumero.pST_NotaUnica = false; fNumero.pNr_notafiscal = rNf.Nr_notafiscal.HasValue ? rNf.Nr_notafiscal.Value.ToString() : string.Empty; fNumero.pDt_saient = rNf.Dt_saient; fNumero.pDs_dadosadic = rNf.Dadosadicionais; fNumero.pDs_obsfiscal = rNf.Obsfiscal; fNumero.pSt_sequenciaauto = rNf.St_sequenciaauto; fNumero.pCd_movto = rNf.Cd_movimentacaostring; fNumero.pCd_cmi = rNf.Cd_cmistring; if (rNf.Tp_nota.Trim().ToUpper().Equals("T")) { fNumero.pInsc_estadual = rEndereco.Insc_estadual; } if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rNf.Chave_acesso_nfe = fNumero.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(fNumero.pNr_notafiscal)) { rNf.Nr_notafiscal = decimal.Parse(fNumero.pNr_notafiscal); } else { rNf.Nr_notafiscal = null; } rNf.Tp_nota = fNumero.pTp_nota; rNf.Nr_serie = fNumero.pNr_serie; rNf.Cd_modelo = fNumero.pCd_modelo; rNf.Dt_emissao = fNumero.pDt_emissao; rNf.Dt_saient = fNumero.pDt_saient; rNf.Obsfiscal = fNumero.pDs_obsfiscal; rNf.Dadosadicionais = fNumero.pDs_dadosadic; rNf.Cd_transportadora = fNumero.pCd_transportadora; rNf.Nm_razaosocialtransp = fNumero.pNm_transportadora; rNf.Cpf_transp = fNumero.pCnpjCpfTransp; rNf.Placaveiculo = fNumero.pPlacaVeiculo; rNf.Tp_frete = fNumero.pTp_frete; rNf.Especie = fNumero.pEspecie; rNf.Quantidade = fNumero.pQuantidade; rNf.Pesobruto = fNumero.pPsbruto; rNf.Pesoliquido = fNumero.pPsliquido; rNf.Vl_frete = fNumero.pVl_frete; if (rNf.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]; rNf.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.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 }); rNf.Cd_cmistring = fNumero.pCd_cmi; rNf.Ds_cmi = rCmi.Ds_cmi; rNf.Tp_duplicata = rCmi.Tp_duplicata; rNf.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal."); } } if (rNf.Nr_notafiscal.HasValue) { CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNf.Nr_notafiscal.ToString(), rNf.Nr_serie, rNf.Cd_empresa, rNf.Cd_clifor, string.Empty, rNf.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."); } } } //Itens da Nota lItens.ForEach(item => { //Item da nota fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item(); rItem.Cd_empresa = item.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_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.Pc_imposto_Aprox = item.Pc_aprox_imposto; //Buscar cfop do item CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNf.Cd_movimentacaostring, item.Cd_condfiscal_produto, rEndereco.Cd_uf.Trim().Equals("99") ? "I" : rEndereco.Cd_uf.Trim().Equals(rEmpresa.rEndereco.Cd_uf.Trim()) ? "D" : "F", (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rNf.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 " + (rEndereco.Cd_uf.Trim().Equals("99") ? "internacional" : rEndereco.Cd_uf.Trim().Equals(rEmpresa.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; CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNf.Cd_empresa, (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_clifor : rNf.Cd_uf_empresa), (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Cd_uf_empresa : rNf.Cd_uf_clifor), rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rItem.Vl_subtotal, rItem.Quantidade, ref vObsFiscal, rNf.Dt_emissao, rItem.Cd_produto, rNf.Tp_nota, rNf.Nr_serie, null); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItem); rNf.Obsfiscal += vObsFiscal.Trim(); } else if (CamadaNegocio.Faturamento.NotaFiscal.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: " + rNf.Tipo_movimento.Trim() + "\r\n" + "Movimentação: " + rNf.Cd_movimentacao.ToString() + "\r\n" + "Cond. Fiscal Clifor: " + rNf.Cd_condfiscal_clifor.Trim() + "\r\n" + "Cond. Fiscal Produto: " + rItem.Cd_condfiscal_produto.Trim() + "\r\n" + "UF Origem: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_clifor.Trim() : rNf.Uf_empresa.Trim()) + "\r\n" + "UF Destino: " + (rNf.Tp_movimento.Trim().ToUpper().Equals("E") ? rNf.Uf_empresa.Trim() : rNf.Uf_clifor.Trim())); } //Procurar impostos sobre os itens da nota fiscal de destino CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos( CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNf.Cd_condfiscal_clifor, rItem.Cd_condfiscal_produto, rNf.Cd_movimentacaostring, rNf.Tp_movimento, rNf.Tp_pessoa, rNf.Cd_empresa, rNf.Nr_serie, rNf.Cd_clifor, rItem.Cd_unidEst, rNf.Dt_emissao, rItem.Quantidade, rItem.Vl_subtotal, rNf.Tp_nota, rNf.Cd_municipioexecservico, null), rItem, rNf.Tp_movimento); //Buscar lista de itens nf com saldo para devolver List <CamadaDados.Faturamento.NotaFiscal.TRegistro_NFCompDev> lItenDev = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFat_ComplementoDevolucao().SelectNFCompDev( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_itenscondicional_x_nfitem x " + "where x.cd_empresa = a.cd_empresa " + "and x.nr_lanctofiscal = a.nr_lanctofiscal " + "and x.id_nfitem = a.id_nfitem " + "and x.cd_empresa = '" + item.Cd_empresa.Trim() + "' " + "and x.id_condicional = " + item.Id_condicionalstr + " " + "and x.id_item = " + item.Id_itemstr + ")" }, new Utils.TpBusca() { vNM_Campo = "a.quantidade - a.qtd_devolvido", vOperador = ">", vVL_Busca = "0" }, new Utils.TpBusca() { vNM_Campo = "a.tp_movimento", vOperador = "=", vVL_Busca = "'S'" } }); if (lItenDev.Count.Equals(0)) { throw new Exception("Não existe NF com saldo disponivel para gerar NF de devolução."); } if (lItenDev.Sum(p => p.Quantidade - p.Qtd_devolvido) < item.Qtd_devolver) { throw new Exception("Não existe saldo NF suficiente para gerar NF de devolução."); } decimal saldo_devolver = item.Qtd_devolver; StringBuilder obs = null; foreach (CamadaDados.Faturamento.NotaFiscal.TRegistro_NFCompDev r in lItenDev) { if (saldo_devolver > decimal.Zero) { rItem.lNfcompdev.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFat_ComplementoDevolucao() { Cd_empresa = r.Cd_empresa, Nr_notafiscal_origem = r.Nr_notafiscal, Nr_serie_origem = r.Nr_serie, Nr_lanctofiscal_origem = r.Nr_lanctofiscal, Id_nfitem_origem = r.Id_nfitem, Qtd_lancto = (r.Quantidade - r.Qtd_devolvido > saldo_devolver ? saldo_devolver : r.Quantidade - r.Qtd_devolvido), Vl_lancto = (r.Quantidade - r.Qtd_devolvido > saldo_devolver ? saldo_devolver : r.Quantidade - r.Qtd_devolvido) * item.Vl_unitario, Tp_operacao = "D" }); //Observação do Item com os dados das notas de origem obs = new StringBuilder(); obs.Append((r.Nr_notafiscal.ToString() + "/" + r.Nr_serie).PadRight(21, ' ') + ((r.Quantidade - r.Qtd_devolvido > saldo_devolver ? saldo_devolver : r.Quantidade - r.Qtd_devolvido).ToString("N3", new System.Globalization.CultureInfo("en-US", true))).PadRight(15, ' ') + ((r.Quantidade - r.Qtd_devolvido > saldo_devolver ? saldo_devolver : r.Quantidade - r.Qtd_devolvido) * item.Vl_unitario).ToString("N2", new System.Globalization.CultureInfo("en-US", true)).PadRight(12, ' ') + "\r\n"); saldo_devolver -= (r.Quantidade - r.Qtd_devolvido > saldo_devolver ? saldo_devolver : r.Quantidade - r.Qtd_devolvido); } } if (!string.IsNullOrEmpty(obs.ToString())) { rItem.Observacao_item = "NF/Serie Origem Quantidade Valor(R$)\r\n" + obs.ToString(); } rItem.rItemCondicional = item; rNf.ItensNota.Add(rItem); }); return(rNf); }
public static CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento ProcessaQuebraTec(CamadaDados.Balanca.TRegistro_PedidoAplicacao rPedAplic, List <CamadaDados.Graos.TRegistro_TaxaDeposito> lTaxas, string Tp_taxa) { //Buscar config taxa //Buscar configuracao para o tipo de taxa que esta sendo faturada CamadaDados.Graos.TList_CFGTaxa CfgTaxa = CamadaNegocio.Graos.TCN_CFGTaxa.Buscar(Tp_taxa, string.Empty, string.Empty, string.Empty, null); //Verificar se existe configuracao fiscal if (string.IsNullOrEmpty(CfgTaxa[0].Tp_fiscal)) { throw new Exception("Não existe configuração fiscal para o tipo de taxa por PESO."); } //Buscar configuracao fiscal do pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.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 = " + rPedAplic.Nr_pedidostring + ")" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'" + CfgTaxa[0].Tp_fiscal.Trim().ToUpper() + "'" } }, 1, string.Empty); if (lCfgPed.Count > 0) { //Buscar pedido CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rNfDev = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); rNfDev.Cd_empresa = rPedAplic.Cd_empresa; rNfDev.Cd_clifor = rPedAplic.Cd_clifor; rNfDev.Nm_clifor = rPedAplic.Nm_clifor; rNfDev.Cd_endereco = rPedAplic.Cd_endereco; rNfDev.Cd_cmi = lCfgPed[0].Cd_cmi; rNfDev.Cd_movimentacao = lCfgPed[0].Cd_movto; rNfDev.lCFGFiscal = lCfgPed; rNfDev.Cd_uf_empresa = rPedAplic.Cd_uf_empresa; rNfDev.Uf_empresa = rPedAplic.Uf_empresa; rNfDev.Cd_uf_clifor = rPedAplic.Cd_uf_clifor; rNfDev.Uf_clifor = rPedAplic.Uf_clifor; rNfDev.Cd_condfiscal_clifor = rPedAplic.Cd_condfiscal_clifor; rNfDev.Tp_duplicata = lCfgPed[0].Tp_duplicata; rNfDev.Ds_tpduplicata = lCfgPed[0].Ds_tpduplicata; rNfDev.Cd_condpgto = rPedAplic.Cd_condpgto; rNfDev.Nr_pedido = rPedAplic.Nr_pedido; rNfDev.Tp_movimento = rPedAplic.Tp_movimento.Trim().ToUpper().Equals("E") ? "S" : "E"; rNfDev.Tp_pessoa = rPedAplic.Tp_pessoa; rNfDev.Tp_nota = (rNfDev.Tp_pessoa.Trim().ToUpper().Equals("J") && rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? "T" : "P"); rNfDev.Nr_serie = lCfgPed[0].Nr_serie; rNfDev.Cd_modelo = lCfgPed[0].Cd_modelo; rNfDev.St_sequenciaauto = lCfgPed[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); rNfDev.Dt_emissao = CamadaDados.UtilData.Data_Servidor(); rNfDev.Dt_saient = rNfDev.Dt_emissao; rNfDev.Dadosadicionais = ProcessaAplicacao.BuscarObsMov("D", rNfDev.Cd_movimentacaostring, rPedAplic.Uf_clifor.Trim().Equals(rPedAplic.Uf_empresa.Trim())); rNfDev.Obsfiscal = ProcessaAplicacao.BuscarObsMov("F", rNfDev.Cd_movimentacaostring, rPedAplic.Uf_empresa.Trim().Equals(rPedAplic.Uf_clifor.Trim())); rNfDev.Pesoliquido = lTaxas.Sum(p => p.Ps_Taxa); //Buscar tipo frete no pedido object obj = new CamadaDados.Faturamento.Pedido.TCD_Pedido().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = rPedAplic.Nr_pedidostring } }, "a.tp_frete"); rNfDev.Tp_frete = obj == null ? string.Empty : obj.ToString(); //Abrir tela para capturar dados da nota fiscal using (NumeroNota.TFNumero_Nota fNumero = new NumeroNota.TFNumero_Nota()) { fNumero.pCd_empresa = rNfDev.Cd_empresa; fNumero.pNm_empresa = rNfDev.Nm_empresa; fNumero.pCd_clifor = rNfDev.Cd_clifor; fNumero.pNm_clifor = rNfDev.Nm_clifor; fNumero.pTp_pessoa = rNfDev.Tp_pessoa; fNumero.pTp_movimento = rNfDev.Tp_movimento; fNumero.pTp_nota = rNfDev.Tp_nota; fNumero.pChave_Acesso_NFe = rNfDev.Chave_acesso_nfe; fNumero.pNr_serie = rNfDev.Nr_serie; fNumero.pDs_serie = rNfDev.Ds_serienf; fNumero.pCd_modelo = rNfDev.Cd_modelo; fNumero.pDt_emissao = rNfDev.Dt_emissao; fNumero.pST_NotaUnica = false; fNumero.pNr_notafiscal = rNfDev.Nr_notafiscal.HasValue ? rNfDev.Nr_notafiscal.Value.ToString() : string.Empty; fNumero.pDt_emissao = rNfDev.Dt_emissao; fNumero.pDt_saient = rNfDev.Dt_saient; fNumero.pDs_dadosadic = rNfDev.Dadosadicionais; fNumero.pDs_obsfiscal = rNfDev.Obsfiscal; fNumero.pSt_sequenciaauto = rNfDev.St_sequenciaauto; fNumero.pCd_movto = rNfDev.Cd_movimentacaostring; fNumero.pCd_cmi = rNfDev.Cd_cmistring; if (rNfDev.Tp_nota.Trim().ToUpper().Equals("T")) { //Buscar inscricao estadual do clifor da nota object obj_insc = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + rNfDev.Cd_clifor.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + rNfDev.Cd_endereco.Trim() + "'" } }, "a.insc_estadual"); fNumero.pInsc_estadual = obj_insc == null ? string.Empty : obj_insc.ToString(); } fNumero.pTp_frete = rNfDev.Tp_frete; if (fNumero.ShowDialog() == System.Windows.Forms.DialogResult.OK) { 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.Nr_serie = fNumero.pNr_serie; rNfDev.Cd_modelo = fNumero.pCd_modelo; rNfDev.Dt_emissao = fNumero.pDt_emissao; rNfDev.Dt_saient = fNumero.pDt_saient; rNfDev.Obsfiscal = fNumero.pDs_obsfiscal; rNfDev.Dadosadicionais = fNumero.pDs_dadosadic; rNfDev.Cd_transportadora = fNumero.pCd_transportadora; rNfDev.Nm_razaosocialtransp = fNumero.pNm_transportadora; rNfDev.Cpf_transp = fNumero.pCnpjCpfTransp; rNfDev.Placaveiculo = fNumero.pPlacaVeiculo; rNfDev.Tp_frete = fNumero.pTp_frete; rNfDev.Especie = fNumero.pEspecie; rNfDev.Quantidade = fNumero.pQuantidade; rNfDev.Pesobruto = fNumero.pPsbruto; rNfDev.Pesoliquido = fNumero.pPsliquido; rNfDev.Vl_frete = fNumero.pVl_frete; 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 CamadaDados.Faturamento.NotaFiscal.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; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal."); } } if (rNfDev.Nr_notafiscal.HasValue) { CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento rFat = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.existeNumeroNota(rNfDev.Nr_notafiscal.ToString(), rNfDev.Nr_serie, rNfDev.Cd_empresa, rNfDev.Cd_clifor, string.Empty, rNfDev.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 econtra ativa.\r\n" + "Não é permitido gerar nota fiscal com mesmo numero."); } } } //Item da nota fiscal CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item rItemDev = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_Item(); rItemDev.Cd_empresa = rPedAplic.Cd_empresa; rItemDev.Cd_produto = rPedAplic.Cd_produto; rItemDev.Cd_local = rPedAplic.Cd_local; rItemDev.Cd_condfiscal_produto = rPedAplic.Cd_condfiscal_produto; rItemDev.Cd_unidade = rPedAplic.Cd_unidade; rItemDev.Cd_unidEst = rPedAplic.Cd_unidade_estoque; rItemDev.Nr_pedido = rPedAplic.Nr_pedido.Value; rItemDev.Id_pedidoitem = rPedAplic.Id_pedidoitem; rItemDev.Quantidade = lTaxas.Sum(v => v.Ps_Taxa); rItemDev.Quantidade_estoque = rItemDev.Quantidade; rItemDev.Vl_subtotal = lTaxas.Sum(v => v.Ps_Taxa) * rPedAplic.Vl_unitario; rItemDev.Vl_subtotal_estoque = rItemDev.Vl_subtotal; rItemDev.Vl_unitario = rPedAplic.Vl_unitario; //Procurar cfop do item CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null; if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(rNfDev.Cd_movimentacaostring, rPedAplic.Cd_condfiscal_produto, rPedAplic.Cd_uf_clifor.Trim().Equals("99") ? "I" : rPedAplic.Cd_uf_clifor.Trim().Equals(rPedAplic.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, rNfDev.Cd_empresa, ref rCfop, null)) { rItemDev.Cd_cfop = rCfop.CD_CFOP; rItemDev.Ds_cfop = rCfop.DS_CFOP; rItemDev.St_bonificacao = rCfop.St_bonificacaobool; } else { throw new Exception("Não existe CFOP " + (rPedAplic.Cd_uf_clifor.Trim().Equals("99") ? "internacional" : rPedAplic.Cd_uf_clifor.Trim().Equals(rPedAplic.Cd_uf_empresa.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + rNfDev.Cd_movimentacaostring + " condição fiscal do produto " + rPedAplic.Cd_condfiscal_produto); } //Procurar Impostos Estaduais para o Item string vObsFiscal = string.Empty; CamadaDados.Faturamento.NotaFiscal.TList_ImpostosNF lImpUf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(rNfDev.Cd_empresa, (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.Cd_movimentacaostring, rNfDev.Tp_movimento, rNfDev.Cd_condfiscal_clifor, rItemDev.Cd_condfiscal_produto, rItemDev.Vl_subtotal, rItemDev.Quantidade, ref vObsFiscal, rNfDev.Dt_emissao, rItemDev.Cd_produto, rNfDev.Tp_nota, rNfDev.Nr_serie, null); if (lImpUf.Exists(v => v.Imposto.St_ICMS)) { CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), rItemDev); rNfDev.Obsfiscal += vObsFiscal.Trim(); } else if (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.ObrigImformarICMS(rItemDev.Cd_produto, rNfDev.Nr_serie, null)) { throw new Exception("Erro: Não existe condição fiscal do ICMS.\r\n" + "Tipo Movimento: " + rNfDev.Tipo_movimento.Trim() + "\r\n" + "Movimentação: " + rNfDev.Cd_movimentacao.ToString() + "\r\n" + "Cond. Fiscal Clifor: " + rNfDev.Cd_condfiscal_clifor.Trim() + "\r\n" + "Cond. Fiscal Produto: " + rItemDev.Cd_condfiscal_produto.Trim() + "\r\n" + "UF Origem: " + (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNfDev.Uf_clifor.Trim() : rNfDev.Uf_empresa.Trim()) + "\r\n" + "UF Destino: " + (rNfDev.Tp_movimento.Trim().ToUpper().Equals("E") ? rNfDev.Uf_empresa.Trim() : rNfDev.Uf_clifor.Trim())); } //Procurar impostos sobre os itens da nota fiscal de destino CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.PreencherOutrosImpostos( CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(rNfDev.Cd_condfiscal_clifor, rItemDev.Cd_condfiscal_produto, rNfDev.Cd_movimentacaostring, rNfDev.Tp_movimento, rNfDev.Tp_pessoa, rNfDev.Cd_empresa, rNfDev.Nr_serie, rNfDev.Cd_clifor, rItemDev.Cd_unidEst, rNfDev.Dt_emissao, rItemDev.Quantidade, rItemDev.Vl_subtotal, rNfDev.Tp_nota, string.Empty, null), rItemDev, rNfDev.Tp_movimento); rNfDev.ItensNota.Add(rItemDev); return(rNfDev); } else { throw new Exception("Não existe configuração fiscal para o pedido Nº " + rPedAplic.Nr_pedidostring); } }
public static string ProcessarEntrega(TRegistro_CargaEntrega val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_CargaEntrega qtb_carga = new TCD_CargaEntrega(); try { if (banco == null) { st_transacao = qtb_carga.CriarBanco_Dados(true); } else { qtb_carga.Banco_Dados = banco; } //Processar estoque dos itens Entrega val.lItens.ForEach(p => { //Verificar se empresa movimenta estoque e qtd entregar maior zero if (p.Qtd_entregue > decimal.Zero) { bool st_movestoque = true; //Buscar item romaneio TRegistro_ItensRomaneio rRomaneio = TCN_ItensRomaneio.Buscar(p.Cd_empresa, p.Id_romaneiostr, p.Id_itemromaneiostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, qtb_carga.Banco_Dados)[0]; if (rRomaneio.Id_prevenda.HasValue) { st_movestoque = new CamadaDados.Faturamento.Cadastros.TCD_CFGCupomFiscal(qtb_carga.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + rRomaneio.Cd_empresa.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "isnull(a.st_movestoque, 'N')", vOperador = "=", vVL_Busca = "'S'" } }, "1") != null; } else if (rRomaneio.Nr_pedido.HasValue) { st_movestoque = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal(qtb_carga.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "isnull(d.st_geraEstoque, 'N')", vOperador = "=", vVL_Busca = "'S'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'NO'" }, new Utils.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 = " + rRomaneio.Nr_pedido.Value.ToString() + ")" } }, "1") != null; } if (st_movestoque) { //Buscar VL.Médio decimal vl_medio = CamadaNegocio.Estoque.TCN_LanEstoque.Valor_Medio_Est_Produto(p.Cd_empresa, p.Cd_produto, qtb_carga.Banco_Dados); //Criar objeto estoque CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque(); rEstoque.Cd_empresa = p.Cd_empresa; rEstoque.Cd_produto = p.Cd_produto; rEstoque.Cd_local = rRomaneio.Cd_local; rEstoque.Dt_lancto = CamadaDados.UtilData.Data_Servidor(); rEstoque.Tp_movimento = "S"; rEstoque.Qtd_entrada = decimal.Zero; rEstoque.Qtd_saida = p.Qtd_entregue; rEstoque.Vl_unitario = vl_medio; rEstoque.Vl_subtotal = p.Qtd_entregue * vl_medio; rEstoque.Tp_lancto = "N"; rEstoque.St_registro = "A"; //Gravar Estoque CamadaNegocio.Estoque.TCN_LanEstoque.GravarEstoque(rEstoque, qtb_carga.Banco_Dados); p.Id_lanctoEstoque = rEstoque.Id_lanctoestoque; } } TCN_ItensCarga.Gravar(p, qtb_carga.Banco_Dados); }); val.St_registro = "E"; qtb_carga.Gravar(val); if (st_transacao) { qtb_carga.Banco_Dados.Commit_Tran(); } return(val.Id_cargastr); } catch (Exception ex) { if (st_transacao) { qtb_carga.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro Entregar Carga: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_carga.deletarBanco_Dados(); } } }
public static void GerarTransferencia(CamadaDados.Graos.TRegistro_Transferencia rTransf) { rTransf.Reg_Clifor_Destino = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Destino[0].CD_Clifor, null); rTransf.Reg_Clifor_Origem = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Origem[0].CD_Clifor, null); using (TFLanCompDevol_NF fCompDevol = new TFLanCompDevol_NF()) { fCompDevol.Cd_empresa = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa; fCompDevol.Nr_pedido = rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString(); fCompDevol.Cd_produto = rTransf.Transf_X_Contrato_Origem[0].Cd_produto; fCompDevol.Cd_clifor = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor; fCompDevol.Tp_operacao = "D"; fCompDevol.Tp_movimento = "E"; fCompDevol.Quantidade = rTransf.QTD_Transf; fCompDevol.Valor = rTransf.VL_Sub_Total_Origem; if (fCompDevol.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.Complemento_Devolucao = fCompDevol.ListaCompDev; #region Nota Fiscal Origem //Buscar registro contrato de origem rTransf.Contrato_Origem = CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty, rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null)[0]; rTransf.rNfOrigem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieOrigem = 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 = " + rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'DF'" //Devolução Fiscal, não movimenta estoque } }, 1, string.Empty); if (lSerieOrigem.Count > 0) { rTransf.rNfOrigem.Nr_serie = lSerieOrigem[0].Nr_serie; rTransf.rNfOrigem.Ds_serienf = lSerieOrigem[0].Ds_serienf; rTransf.rNfOrigem.Cd_modelo = lSerieOrigem[0].Cd_modelo; rTransf.rNfOrigem.Cd_movimentacao = lSerieOrigem[0].Cd_movto; rTransf.rNfOrigem.Cd_cmi = lSerieOrigem[0].Cd_cmi; rTransf.rNfOrigem.Tp_movimento = "S"; rTransf.rNfOrigem.Tp_nota = "P"; rTransf.rNfOrigem.Dt_emissao = rTransf.DT_Lancto; rTransf.rNfOrigem.Dt_saient = rTransf.DT_Lancto; using (TFNumero_Nota Numero_Nota = new TFNumero_Nota()) { Numero_Nota.Text = "Dados Nota Fiscal Devolução"; Numero_Nota.pCd_empresa = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa; Numero_Nota.pNm_empresa = rTransf.Transf_X_Contrato_Origem[0].NM_Empresa; Numero_Nota.pCd_clifor = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor; Numero_Nota.pNm_clifor = rTransf.Transf_X_Contrato_Origem[0].NM_Clifor; Numero_Nota.pNr_serie = lSerieOrigem[0].Nr_serie; Numero_Nota.pDs_serie = lSerieOrigem[0].Ds_serienf; Numero_Nota.pCd_modelo = lSerieOrigem[0].Cd_modelo; Numero_Nota.pTp_movimento = "S"; Numero_Nota.pTp_nota = "P"; Numero_Nota.pDt_emissao = rTransf.DT_Lancto; Numero_Nota.pDt_saient = rTransf.DT_Lancto; Numero_Nota.pSt_sequenciaauto = lSerieOrigem[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); Numero_Nota.pTp_pessoa = rTransf.Reg_Clifor_Origem.Tp_pessoa; Numero_Nota.pCd_movto = rTransf.rNfOrigem.Cd_movimentacaostring; Numero_Nota.pCd_cmi = rTransf.rNfOrigem.Cd_cmistring; //Buscar insc. estadual origem object obj_inscorigem = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_endereco.Trim() + "'" } }, "a.insc_estadual"); if (obj_inscorigem != null) { Numero_Nota.pInsc_estadual = obj_inscorigem.ToString(); } if (Numero_Nota.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.rNfOrigem.Nr_serie = Numero_Nota.pNr_serie; rTransf.rNfOrigem.Cd_modelo = Numero_Nota.pCd_modelo; rTransf.rNfOrigem.Tp_movimento = Numero_Nota.pTp_movimento; rTransf.rNfOrigem.Tp_nota = Numero_Nota.pTp_nota; rTransf.rNfOrigem.Dt_emissao = Numero_Nota.pDt_emissao; rTransf.rNfOrigem.Dt_saient = Numero_Nota.pDt_saient; rTransf.rNfOrigem.St_sequenciaauto = Numero_Nota.pSt_sequenciaauto;; rTransf.rNfOrigem.Obsfiscal = Numero_Nota.pDs_obsfiscal; rTransf.rNfOrigem.Dadosadicionais = Numero_Nota.pDs_dadosadic; rTransf.rNfOrigem.Chave_acesso_nfe = Numero_Nota.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(Numero_Nota.pNr_notafiscal)) { rTransf.rNfOrigem.Nr_notafiscal = decimal.Parse(Numero_Nota.pNr_notafiscal); } else { rTransf.rNfOrigem.Nr_notafiscal = null; } if (rTransf.rNfOrigem.Cd_cmistring.Trim() != Numero_Nota.pCd_cmi.Trim()) { CamadaDados.Fiscal.TRegistro_CadCMI rCmi = CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota.pCd_cmi, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, null)[0]; rTransf.rNfOrigem.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.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 }); rTransf.rNfOrigem.Cd_cmistring = Numero_Nota.pCd_cmi; rTransf.rNfOrigem.Ds_cmi = rCmi.Ds_cmi; rTransf.rNfOrigem.Tp_duplicata = rCmi.Tp_duplicata; rTransf.rNfOrigem.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal de origem."); } } } else { throw new Exception("Não existe configuração fiscal de TRANSFERENCIA para o contrato de origem " + rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString() + "."); } #endregion #region Nota Fiscal Destino //Buscar pedido destino rTransf.Contrato_Destino = CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty, rTransf.Transf_X_Contrato_Destino[0].Nr_contratostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null)[0]; rTransf.rNfDestino = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieDestino = 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 = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'TF'" } }, 1, string.Empty); if (lSerieDestino.Count > 0) { rTransf.rNfDestino.Nr_serie = lSerieDestino[0].Nr_serie; rTransf.rNfDestino.Ds_serienf = lSerieDestino[0].Ds_serienf; rTransf.rNfDestino.Cd_modelo = lSerieDestino[0].Cd_modelo; rTransf.rNfDestino.Cd_movimentacao = lSerieDestino[0].Cd_movto; rTransf.rNfDestino.Cd_cmi = lSerieDestino[0].Cd_cmi; rTransf.rNfDestino.Tp_movimento = "E"; rTransf.rNfDestino.Dt_emissao = rTransf.DT_Lancto; rTransf.rNfDestino.Dt_saient = rTransf.DT_Lancto; using (TFNumero_Nota Numero_Nota_Destino = new TFNumero_Nota()) { Numero_Nota_Destino.Text = "Dados Nota Fiscal Entrada"; Numero_Nota_Destino.pCd_empresa = rTransf.Transf_X_Contrato_Destino[0].CD_Empresa; Numero_Nota_Destino.pNm_empresa = rTransf.Transf_X_Contrato_Destino[0].NM_Empresa; Numero_Nota_Destino.pCd_clifor = rTransf.Transf_X_Contrato_Destino[0].CD_Clifor; Numero_Nota_Destino.pNm_clifor = rTransf.Transf_X_Contrato_Destino[0].NM_Clifor; Numero_Nota_Destino.pNr_serie = lSerieDestino[0].Nr_serie; Numero_Nota_Destino.pDs_serie = lSerieDestino[0].Ds_serienf; Numero_Nota_Destino.pCd_modelo = lSerieDestino[0].Cd_modelo; Numero_Nota_Destino.pTp_movimento = "E"; Numero_Nota_Destino.pDt_emissao = rTransf.DT_Lancto; Numero_Nota_Destino.pDt_saient = rTransf.DT_Lancto; Numero_Nota_Destino.pSt_sequenciaauto = lSerieDestino[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); Numero_Nota_Destino.pTp_pessoa = rTransf.Reg_Clifor_Destino.Tp_pessoa; Numero_Nota_Destino.pCd_movto = rTransf.rNfDestino.Cd_movimentacaostring; Numero_Nota_Destino.pCd_cmi = rTransf.rNfDestino.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 = "'" + rTransf.Contrato_Destino.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Destino.Cd_endereco.Trim() + "'" } }, "a.insc_estadual"); if (obj_inscdestino != null) { Numero_Nota_Destino.pInsc_estadual = obj_inscdestino.ToString(); } Numero_Nota_Destino.pTp_nota = (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.validarST_Nota("E", Numero_Nota_Destino.pTp_pessoa, rTransf.Reg_Clifor_Destino.St_equiparado_pjbool, rTransf.Reg_Clifor_Destino.St_agropecuariabool).Equals(0) ? "P" : "T"); if (Numero_Nota_Destino.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.rNfDestino.Nr_serie = Numero_Nota_Destino.pNr_serie; rTransf.rNfDestino.Cd_modelo = Numero_Nota_Destino.pCd_modelo; rTransf.rNfDestino.Tp_movimento = Numero_Nota_Destino.pTp_movimento; rTransf.rNfDestino.Tp_nota = Numero_Nota_Destino.pTp_nota; rTransf.rNfDestino.Dt_emissao = Numero_Nota_Destino.pDt_emissao; rTransf.rNfDestino.Dt_saient = Numero_Nota_Destino.pDt_saient; rTransf.rNfDestino.Obsfiscal = Numero_Nota_Destino.pDs_obsfiscal; rTransf.rNfDestino.Dadosadicionais = Numero_Nota_Destino.pDs_dadosadic; rTransf.rNfDestino.Chave_acesso_nfe = Numero_Nota_Destino.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(Numero_Nota_Destino.pNr_notafiscal)) { rTransf.rNfDestino.Nr_notafiscal = decimal.Parse(Numero_Nota_Destino.pNr_notafiscal); } else { rTransf.rNfDestino.Nr_notafiscal = null; } rTransf.rNfDestino.St_sequenciaauto = Numero_Nota_Destino.pSt_sequenciaauto; if (rTransf.rNfDestino.Cd_cmistring.Trim() != Numero_Nota_Destino.pCd_cmi.Trim()) { CamadaDados.Fiscal.TRegistro_CadCMI rCmi = CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota_Destino.pCd_cmi, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, null)[0]; rTransf.rNfDestino.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.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 }); rTransf.rNfDestino.Cd_cmistring = Numero_Nota_Destino.pCd_cmi; rTransf.rNfDestino.Ds_cmi = rCmi.Ds_cmi; rTransf.rNfDestino.Tp_duplicata = rCmi.Tp_duplicata; rTransf.rNfDestino.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal de destino."); } } } else { throw new Exception("Não existe configuração fiscal NORMAL para o contrato de destino " + rTransf.Transf_X_Contrato_Destino[0].NR_Contrato.ToString() + "."); } #endregion rTransf.Duplicata_Origem = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Origem[0], rTransf.VL_Sub_Total_Origem, rTransf.DT_Lancto, "O"); rTransf.Duplicata_Destino = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Destino[0], rTransf.VL_Sub_Total_Destino, rTransf.DT_Lancto, "D"); if ((rTransf.Duplicata_Origem != null) && (rTransf.Duplicata_Destino != null)) { rTransf.Contrato_Origem.Pedido_Fiscal = 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 = " + rTransf.Contrato_Origem.Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'DF'" } }, 1, string.Empty); rTransf.Reg_Produto_Origem = CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Origem[0].Cd_produto, null); rTransf.Reg_Empresa_Origem = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Origem[0].CD_Empresa, string.Empty, string.Empty, null)[0]; CamadaDados.Faturamento.Pedido.TList_Pedido List_Contrato_Destino = new CamadaDados.Faturamento.Pedido.TList_Pedido(); rTransf.Contrato_Destino.Pedido_Fiscal = 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 = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'TF'" } }, 1, string.Empty); rTransf.Reg_Produto_Destino = CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Destino[0].Cd_produto, null); rTransf.Reg_Empresa_Destino = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Destino[0].CD_Empresa, string.Empty, string.Empty, null)[0]; } else { throw new Exception("Verifique os dados das Duplicatas."); } } else { throw new Exception("Obrigatório informar as notas a serem Devolvidas."); } } }
private void ConfigOutrosImpostos() { if (string.IsNullOrEmpty(CD_Empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Empresa.Focus(); return; } if (string.IsNullOrEmpty(CFG_Pedido.Text)) { MessageBox.Show("Obrigatorio informar tipo pedido para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } if (Cbx_TP_Fiscal.SelectedValue == null) { MessageBox.Show("Obrigatorio selecionar tipo fiscal para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); Cbx_TP_Fiscal.Focus(); return; } if (string.IsNullOrEmpty(CD_Clifor.Text)) { MessageBox.Show("Obrigatorio informar cliente/fornecedor para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Clifor.Focus(); return; } if (string.IsNullOrEmpty(CD_Endereco.Text)) { MessageBox.Show("Obrigatorio informar endereço para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Endereco.Focus(); return; } if (bsProdutoSimular.Count.Equals(0)) { MessageBox.Show("Obrigatorio informar produto para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); bb_adicionar.Focus(); return; } //Buscar movimentacao comercial do tipo de pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + CFG_Pedido.Text.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'" + Cbx_TP_Fiscal.SelectedValue.ToString() + "'" } }, 1, string.Empty); if (lCfgPed.Count < 1) { MessageBox.Show("Não existe configuração fiscal para o tipo de pedido " + CFG_Pedido.Text.Trim() + ", tipo fiscal " + Cbx_TP_Fiscal.SelectedValue.ToString() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } using (TFCondFiscalImposto fCondImposto = new TFCondFiscalImposto()) { fCondImposto.pCd_empresa = CD_Empresa.Text; fCondImposto.pCd_imposto = (bsImpProduto.Current as CamadaDados.Faturamento.NotaFiscal.TRegistro_ImpostosNF).Cd_impostostr; fCondImposto.pCd_condfiscal_clifor = cd_condfiscal_clifor.Text; fCondImposto.pCd_condfiscal_produto = (bsProdutoSimular.Current != null ? (bsProdutoSimular.Current as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto : string.Empty); fCondImposto.pCd_movimentacao = lCfgPed[0].Cd_movtostring; fCondImposto.pTp_faturamento = TP_Mov.Text; fCondImposto.pSt_juridica = tp_pessoa.Text.Trim().ToUpper().Equals("J"); fCondImposto.pSt_fisica = tp_pessoa.Text.Trim().ToUpper().Equals("F"); 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 { } } } CalcularImpostos(); } }
private void ConfigImpostoUf() { if (string.IsNullOrEmpty(CD_Empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Empresa.Focus(); return; } if (string.IsNullOrEmpty(CFG_Pedido.Text)) { MessageBox.Show("Obrigatorio informar tipo pedido para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } if (Cbx_TP_Fiscal.SelectedValue == null) { MessageBox.Show("Obrigatorio selecionar tipo fiscal para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); Cbx_TP_Fiscal.Focus(); return; } if (string.IsNullOrEmpty(CD_Clifor.Text)) { MessageBox.Show("Obrigatorio informar cliente/fornecedor para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Clifor.Focus(); return; } if (string.IsNullOrEmpty(CD_Endereco.Text)) { MessageBox.Show("Obrigatorio informar endereço para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Endereco.Focus(); return; } if (bsProdutoSimular.Count.Equals(0)) { MessageBox.Show("Obrigatorio informar produto para configurar imposto.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); bb_adicionar.Focus(); return; } //Buscar movimentacao comercial do tipo de pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + CFG_Pedido.Text.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'" + Cbx_TP_Fiscal.SelectedValue.ToString() + "'" } }, 1, string.Empty); if (lCfgPed.Count < 1) { MessageBox.Show("Não existe configuração fiscal para o tipo de pedido " + CFG_Pedido.Text.Trim() + ", tipo fiscal " + Cbx_TP_Fiscal.SelectedValue.ToString() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } using (TFCondFiscalICMS fCondICMS = new TFCondFiscalICMS()) { fCondICMS.pCd_empresa = CD_Empresa.Text; fCondICMS.pCd_condfiscal_clifor = cd_condfiscal_clifor.Text; fCondICMS.pCd_condfiscal_produto = (bsProdutoSimular.Current != null ? (bsProdutoSimular.Current as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto : string.Empty); fCondICMS.pCd_movto = lCfgPed[0].Cd_movtostring; fCondICMS.pCd_UfDest = TP_Mov.Text.Trim().ToUpper().Equals("E") ? uf_empresa.Text : UF.Text; fCondICMS.pCd_UfOrig = TP_Mov.Text.Trim().ToUpper().Equals("E") ? UF.Text : uf_empresa.Text; fCondICMS.pTp_movimento = (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF")) ? TP_Mov.Text.Trim().ToUpper().Equals("E") ? "S" : "E" : TP_Mov.Text; if (fCondICMS.ShowDialog() == DialogResult.OK) { if ((fCondICMS.rCond != null) && (fCondICMS.lMov != null) && (fCondICMS.lUfDestino != null) && (fCondICMS.lUfOrigem != null)) { try { CamadaNegocio.Fiscal.TCN_CadCondFiscalICMS.Gravar(fCondICMS.rCond, fCondICMS.lMov, fCondICMS.lUfOrigem, fCondICMS.lUfDestino, null); } catch { } } } CalcularImpostos(); } }
private void CalcularImpostos() { if (string.IsNullOrEmpty(CD_Empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Empresa.Focus(); return; } if (string.IsNullOrEmpty(CFG_Pedido.Text)) { MessageBox.Show("Obrigatorio informar tipo pedido para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } if (Cbx_TP_Fiscal.SelectedValue == null) { MessageBox.Show("Obrigatorio selecionar tipo fiscal para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); Cbx_TP_Fiscal.Focus(); return; } if (string.IsNullOrEmpty(CD_Clifor.Text)) { MessageBox.Show("Obrigatorio informar cliente/fornecedor para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Clifor.Focus(); return; } if (string.IsNullOrEmpty(CD_Endereco.Text)) { MessageBox.Show("Obrigatorio informar endereço para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CD_Endereco.Focus(); return; } if (bsProdutoSimular.Count.Equals(0)) { MessageBox.Show("Obrigatorio informar produto para simular impostos.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); bb_adicionar.Focus(); return; } //Buscar movimentacao comercial do tipo de pedido CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lCfgPed = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.cfg_pedido", vOperador = "=", vVL_Busca = "'" + CFG_Pedido.Text.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'" + Cbx_TP_Fiscal.SelectedValue.ToString() + "'" } }, 1, string.Empty); if (lCfgPed.Count < 1) { MessageBox.Show("Não existe configuração fiscal para o tipo de pedido " + CFG_Pedido.Text.Trim() + ", tipo fiscal " + Cbx_TP_Fiscal.Text + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CFG_Pedido.Focus(); return; } CamadaDados.Fiscal.TList_ResumoImposto lResumo = new CamadaDados.Fiscal.TList_ResumoImposto(); for (int i = 0; i < bsProdutoSimular.Count; i++) { string retobs = string.Empty; (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraImpostosPorUf(CD_Empresa.Text, (TP_Mov.Text.Trim().ToUpper().Equals("E") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DV") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DF") ? UF.Text : uf_empresa.Text), (TP_Mov.Text.Trim().ToUpper().Equals("E") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DV") && (Cbx_TP_Fiscal.SelectedValue.ToString().Trim() != "DF") ? uf_empresa.Text : UF.Text), lCfgPed[0].Cd_movtostring, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text), cd_condfiscal_clifor.Text, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, ref retobs, DateTime.Now, cd_produto.Text, string.Empty, string.Empty, null); (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Concat(CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(cd_condfiscal_clifor.Text, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Cd_condfiscal_produto, lCfgPed[0].Cd_movtostring, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text), tp_pessoa.Text, CD_Empresa.Text, lCfgPed[0].Nr_serie, CD_Clifor.Text, string.Empty, DateTime.Now, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, string.Empty, pCd_municipioexecservico, null)); var ipi = (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Find(v => v.Imposto.St_IPI); var icms = (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.Find(v => v.Imposto.St_ICMS); if (ipi != null && (icms == null ? false : icms.St_somarIPIBaseICMS || icms.St_somarIPIBaseST)) { TRegistro_ImpostosNF rImp = new TRegistro_ImpostosNF(); rImp.Cd_imposto = icms.Cd_imposto; rImp.Pc_aliquota = icms.Pc_aliquota; rImp.Pc_reducaoaliquota = icms.Pc_reducaoaliquota; rImp.Pc_reducaobasecalc = icms.Pc_reducaobasecalc; rImp.Pc_aliquotasubst = icms.Pc_aliquotasubst; rImp.Pc_reducaobasecalcsubsttrib = icms.Pc_reducaobasecalcsubsttrib; rImp.Tp_situacao = icms.Tp_situacao; rImp.Dt_imposto = icms.Dt_imposto; rImp.St_impostouf = 0; rImp.Tp_modbasecalc = icms.Tp_modbasecalc; rImp.Tp_modbasecalcST = icms.Tp_modbasecalcST; rImp.Cd_st = icms.Cd_st; rImp.St_substtrib = icms.St_substtrib; rImp.St_simplesnacional = icms.St_simplesnacional; rImp.Pc_iva_st = icms.Pc_iva_st; rImp.Vl_mva = icms.Vl_mva; rImp.Pc_aliquotaICMSDest = icms.Pc_aliquotaICMSDest; rImp.Vl_pauta = icms.Vl_pauta; rImp.St_somarIPIBaseICMS = icms.St_somarIPIBaseICMS; rImp.St_somarIPIBaseST = icms.St_somarIPIBaseST; rImp.Vl_ipisomar = ipi.Vl_impostocalc; //Calcular Imposto CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento_Item .CalcImpostos(rImp, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Vl_subtotal, (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).Quantidade, (Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DV") || Cbx_TP_Fiscal.SelectedValue.ToString().Trim().Equals("DF") ? TP_Mov.Text.Trim().Equals("E") ? "S" : "E" : TP_Mov.Text)); //Preencher ICMS Item Nota icms.Vl_basecalcsubsttrib = rImp.Vl_basecalcsubsttrib; icms.Vl_impostosubsttrib = rImp.Vl_impostosubsttrib; } (bsProdutoSimular[i] as CamadaDados.Fiscal.TRegistro_ProdutoSimular).lImpProduto.ForEach(p => { if (lResumo.Exists(v => v.Cd_imposto.Trim().Equals(p.Cd_imposto.Value.ToString()) && v.St_totalnota.Trim().Equals(p.St_totalnota.Trim()))) { lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_imposto += p.Vl_impostocalc; lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_impostoretido += p.Vl_impostoretido; lResumo.Find(v => v.Cd_imposto.Trim().Equals(p.Cd_impostostr.Trim())).Vl_impostosubstrib += p.Vl_impostosubsttrib + p.Vl_FCPST; } else { lResumo.Add(new CamadaDados.Fiscal.TRegistro_ResumoImposto() { Cd_imposto = p.Cd_impostostr, Ds_imposto = p.Ds_imposto, Vl_imposto = p.Vl_impostocalc, Vl_impostoretido = p.Vl_impostoretido, Vl_impostosubstrib = p.Vl_impostosubsttrib + p.Vl_FCPST, St_totalnota = p.St_totalnota }); } }); } tot_imposto.Value = lResumo.Sum(p => p.Vl_imposto); tot_retido.Value = lResumo.Sum(p => p.Vl_impostoretido); tot_subst.Value = lResumo.Sum(p => p.Vl_impostosubstrib); bsProdutoSimular.ResetBindings(true); bsResumoImposto.DataSource = lResumo; }