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 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); } }
private void CancelarNFe() { if (string.IsNullOrEmpty(cd_empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cbSerie.SelectedItem == null) { MessageBox.Show("Obrigatorio informar serie.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); cbSerie.Focus(); return; } if (string.IsNullOrEmpty(nr_notafiscal.Text)) { MessageBox.Show("Obrigatorio informar " + (St_nfce ? "NFCe" : "NFe") + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); nr_notafiscal.Focus(); return; } if (St_nfce) { CamadaDados.Faturamento.PDV.TList_NFCe lNFCe = CamadaNegocio.Faturamento.PDV.TCN_NFCe.Buscar(string.Empty, nr_notafiscal.Text, cd_empresa.Text, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, cbSerie.SelectedValue.ToString(), string.Empty, false, string.Empty, string.Empty, 1, null); if (lNFCe.Count > 0) { List <CamadaDados.Faturamento.PDV.TRegistro_VendaRapida> lVenda = null; if (lNFCe[0].St_registro.Trim().ToUpper().Equals("C")) { MessageBox.Show("NFCe ja se encontra CANCELADA.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string msg = string.Empty; if (lNFCe[0].Id_contingencia.HasValue && !lNFCe[0].Nr_protocolo.HasValue) { msg = "NFCe emitida em CONTINGÊNCIA OFFLINE e ainda não transmitida para a receita.\r\n" + "O cancelamento desta NFCe somente ocorrerá após o envio da mesma para receita."; } if (MessageBox.Show((string.IsNullOrEmpty(msg) ? string.Empty : msg + "\r\n") + "Confirma cancelamento NFCe?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { try { bool st_cancelar = true; //Verificar se o NFCe esta vinculado a NFe object obj = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_ecfvinculadoNF x " + "where x.cd_empresa = a.cd_empresa " + "and x.nr_lanctofiscal = a.nr_lanctofiscal " + "and x.cd_empresa = '" + lNFCe[0].Cd_empresa.Trim() + "' " + "and x.id_cupom = " + lNFCe[0].Id_nfcestr + ")" } }, "a.nr_notafiscal"); if (obj != null) { MessageBox.Show("NFCe Nº" + lNFCe[0].Id_nfcestr + " esta vinculado a NFe Nº" + obj.ToString() + ".\r\n" + "Para cancelar NFCe obrigatório antes cancelar NFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (lNFCe[0].Nr_protocolo.HasValue || lNFCe[0].Id_contingencia.HasValue) { string motivo = string.Empty; CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = null; CamadaDados.Faturamento.Cadastros.TList_Evento lEv = null; //Verificar evento CamadaDados.Faturamento.PDV.TList_EventoNFCe lEvento = CamadaNegocio.Faturamento.PDV.TCN_EventoNFCe.Buscar(lNFCe[0].Cd_empresa, lNFCe[0].Id_nfcestr, string.Empty, null); if (lEvento.Count.Equals(0)) { if (string.IsNullOrEmpty(motivo)) { InputBox ibp = new InputBox(); ibp.Text = "Motivo Cancelamento NFCe"; motivo = ibp.ShowDialog(); if (string.IsNullOrEmpty(motivo)) { MessageBox.Show("Obrigatorio informar motivo de cancelamento da NFCe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (motivo.Trim().Length < 15) { MessageBox.Show("Motivo de cancelamento deve ter mais que 15 caracteres.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } //Buscar evento Cancelamento if (lEv == null) { lEv = CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "CA", null); } if (lEv.Count.Equals(0)) { MessageBox.Show("Não existe evento de CANCELAMENTO NFE cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Cancelar NFe Receita CamadaDados.Faturamento.PDV.TRegistro_EventoNFCe rEvento = new CamadaDados.Faturamento.PDV.TRegistro_EventoNFCe(); rEvento.Cd_empresa = lNFCe[0].Cd_empresa; rEvento.Id_cupom = lNFCe[0].Id_nfce; rEvento.Chave_acesso_nfce = lNFCe[0].Chave_acesso; rEvento.Nr_protocoloNFCe = lNFCe[0].Nr_protocolo; rEvento.Dt_evento = CamadaDados.UtilData.Data_Servidor(); rEvento.Justificativa = motivo; rEvento.Cd_eventostr = lEv[0].Cd_eventostr; rEvento.Tp_evento = lEv[0].Tp_evento; rEvento.Ds_evento = lEv[0].Ds_evento; rEvento.St_registro = "A"; CamadaNegocio.Faturamento.PDV.TCN_EventoNFCe.Gravar(rEvento, null); lEvento.Add(rEvento); } if (!lEvento[0].St_registro.Trim().ToUpper().Equals("T") && lNFCe[0].Nr_protocolo.HasValue) { //Buscar CfgNfe para a empresa if (lCfg == null) { lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); } if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNFCe[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { msg = NFCe.EventoNFCe.TEventoNFCe.EnviarEvento(lEvento[0], lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + ".", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); st_cancelar = false; } } } } if (st_cancelar) { if (!lNFCe[0].Nr_protocolo.HasValue && !lNFCe[0].Id_contingencia.HasValue) { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfgNfCe = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfgNfCe.Count.Equals(0)) { MessageBox.Show("Não existe configuração NFC-e para a empresa " + lNFCe[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Consultar Chave string ret = NFCe.ConsultaChave.TConsultaChave.ConsultaChave(lNFCe[0].Chave_acesso, "1", lCfgNfCe[0]); if (!string.IsNullOrEmpty(ret)) { MessageBox.Show("Não é permtido excluir cupom com chave de acesso existente na receita.\r\n" + ret, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } CamadaNegocio.Faturamento.PDV.TCN_NFCe.CancelarCF(lNFCe[0], null); MessageBox.Show("NFCe cancelada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); if (!lNFCe[0].Nr_protocolo.HasValue && !lNFCe[0].Id_contingencia.HasValue) { CamadaDados.Faturamento.Cadastros.TList_CadSequenciaNF lSeq = CamadaNegocio.Faturamento.Cadastros.TCN_CadSequenciaNF.Busca(lNFCe[0].Nr_serie, lNFCe[0].Cd_modelo, lNFCe[0].Cd_empresa, null); if (lSeq.Count > 0) { if (lSeq[0].Seq_NotaFiscal.Equals(lNFCe[0].NR_NFCe)) { lSeq[0].Seq_NotaFiscal--; CamadaNegocio.Faturamento.Cadastros.TCN_CadSequenciaNF.Gravar(lSeq[0], null); MessageBox.Show("Sequencia de numeração da serie voltada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Buscar configuracao nfe CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfgNfe = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfgNfe.Count > 0) { try { //Inutilizar numero nota NFCe.InutilizaNFCe.TInutilizaNFCe.InutilizarNFCe(lCfgNfe[0].Cd_uf_empresa, lCfgNfe[0].Cnpj_empresa, lNFCe[0].Nr_serie, lNFCe[0].Cd_modelo, DateTime.Now.Year.ToString(), lNFCe[0].NR_NFCe.Value, lNFCe[0].NR_NFCe.Value, "NUMERO INUTILIZADO DEVIDO A ERRO NA EMISSAO DA NFCe", lCfgNfe[0]); MessageBox.Show("Numero INUTILIZADO com sucesso na receita.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } else { CamadaDados.Faturamento.NotaFiscal.TList_RegLanFaturamento lNf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.Busca(cd_empresa.Text, nr_notafiscal.Text, cbSerie.SelectedValue.ToString(), string.Empty, string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, true, string.Empty, string.Empty, "S", string.Empty, "A", string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, "'P'", string.Empty, false, string.Empty, string.Empty, string.Empty, 1, string.Empty, null); if (lNf.Count > 0) { try { //Verificar se NFe ja nao foi cancelada junto a receita CamadaDados.Faturamento.NFE.TList_EventoNFe lEvento = CamadaNegocio.Faturamento.NFE.TCN_EventoNFe.Buscar(string.Empty, lNf[0].Cd_empresa, lNf[0].Nr_lanctofiscal.ToString(), string.Empty, string.Empty, "CA", string.Empty, null); if (lEvento.Count.Equals(0) ? false : lEvento[0].St_registro.Trim().ToUpper().Equals("T")) { //Cancelar somente NFe no Aliance.NET CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(lNf[0].Cd_empresa, string.Empty, lNf[0].Nr_pedidostring, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, false, 1, string.Empty, null); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); Close(); } else { if (lEvento.Count.Equals(0)) { InputBox ibp = new InputBox(); ibp.Text = "Motivo Cancelamento Nota Fiscal"; string motivo = ibp.ShowDialog(); if (string.IsNullOrEmpty(motivo)) { MessageBox.Show("Obrigatorio informar motivo de cancelamento da nota fiscal.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (motivo.Trim().Length < 15) { MessageBox.Show("Motivo de cancelamento deve ter mais que 15 caracteres.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Buscar evento Carta Correcao CamadaDados.Faturamento.Cadastros.TList_Evento lEv = CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "CA", null); if (lEv.Count.Equals(0)) { MessageBox.Show("Não existe evento de CANCELAMENTO NFE cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Cancelar NFe Receita CamadaDados.Faturamento.NFE.TRegistro_EventoNFe rEvento = new CamadaDados.Faturamento.NFE.TRegistro_EventoNFe(); rEvento.Cd_empresa = lNf[0].Cd_empresa; rEvento.Nr_lanctofiscal = lNf[0].Nr_lanctofiscal; rEvento.Chave_acesso_nfe = lNf[0].Chave_acesso_nfe; rEvento.Nr_protocoloNfe = lNf[0].Nr_protocolo; rEvento.Dt_evento = CamadaDados.UtilData.Data_Servidor(); rEvento.Ds_evento = motivo; rEvento.Cd_eventostr = lEv[0].Cd_eventostr; rEvento.Descricao_evento = lEv[0].Ds_evento; rEvento.Tp_evento = lEv[0].Tp_evento; rEvento.St_registro = "A"; CamadaNegocio.Faturamento.NFE.TCN_EventoNFe.Gravar(rEvento, null); if (MessageBox.Show("Evento de CANCELAMENTO gravado com sucesso.\r\n" + "Deseja enviar o mesmo para a receita?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNf[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNf[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(rEvento, lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + "\r\n" + "Obs.: A NFe não será cancelada no sistema Aliance.NET enquanto a mesma não for cancelada junto a receita.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento registrado e vinculado a NF-e.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = new CamadaDados.Faturamento.Pedido.TCD_Pedido().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = lNf[0].Nr_pedidostring }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.nr_pedido = a.nr_pedido)" } }, 1, string.Empty); if (lPed.Count > 0) { CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); } //Cancelar venda rapida nota entrega futura CamadaDados.Faturamento.PDV.TList_VendaRapida lVendaEF = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_vendarapida_x_entregafutura x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_cupom = a.id_cupom " + "and x.cd_empresa = '" + lNf[0].Cd_empresa.Trim() + "' " + "and x.nr_lanctofiscal = " + lNf[0].Nr_lanctofiscalstr + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVendaEF, null); Close(); } } } } else { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNf[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNf[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(lEvento[0], lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + "\r\n" + "Obs.: A NFe não será cancelada no sistema Aliance.NET enquanto a mesma não for cancelada junto a receita.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento registrado e vinculado a NF-e.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(lNf[0].Cd_empresa, string.Empty, lNf[0].Nr_pedidostring, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, false, 1, string.Empty, null); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); Close(); } } } } } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message.Trim()); } } } }
private void BuscarPedido() { if (!string.IsNullOrEmpty(nr_pedido.Text)) { CamadaDados.Faturamento.Pedido.TList_Pedido lPed = new CamadaDados.Faturamento.Pedido.TCD_Pedido().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = nr_pedido.Text }, new Utils.TpBusca() { vNM_Campo = "c.tp_movimento", vOperador = "=", vVL_Busca = "'E'" }, new Utils.TpBusca() { vNM_Campo = "isnull(a.st_pedido, 'A')", vOperador = "=", vVL_Busca = "'F'" } }, 1, string.Empty); if (lPed.Count > 0) { cd_empresa.Text = lPed[0].CD_Empresa; nm_empresa.Text = lPed[0].Nm_Empresa; cd_clifor.Text = lPed[0].CD_Clifor; nm_clifor.Text = lPed[0].NM_Clifor; //Buscar Itens do Pedido bsItensPedido.DataSource = new CamadaDados.Faturamento.Pedido.TCD_LanPedido_Item().Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = lPed[0].Nr_pedido.ToString() }, new Utils.TpBusca() { vNM_Campo = "isnull(tpProd.st_consumointerno, 'N')", vOperador = "=", vVL_Busca = "'S'" }, new Utils.TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, 0, string.Empty, string.Empty, string.Empty); bsItensPedido_PositionChanged(this, new EventArgs()); } else { nr_pedido.Clear(); } } }
public static string DeletarLoteOS(TRegistro_LoteOS val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LoteOS qtb_lote = new TCD_LoteOS(); try { if (banco == null) { st_transacao = qtb_lote.CriarBanco_Dados(true); } else { qtb_lote.Banco_Dados = banco; } //Verificar se o lote ja se encontra processado if (val.St_registro.Trim().ToUpper().Equals("P")) { //Verificar se o pedido de remessa esta cancelado object obj = new CamadaDados.Faturamento.Pedido.TCD_Pedido().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_ose_lote x " + "where a.nr_pedido = x.nr_pedido " + "and x.nr_pedido = " + val.Nr_pedido.Value.ToString() + ")" }, new TpBusca() { vNM_Campo = "isnull(a.st_pedido, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, "NR_Pedido"); if (obj != null) { throw new Exception("Para cancelar o lote e necessario cancelar antes o pedido de remessa.\r\n" + "Pedido Remessa Nº " + obj.ToString().Trim()); } } //Deletar Lote X Servicos val.lOs.ForEach(p => { TCN_Lote_X_Servicos.DeletarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); val.lOsDel.ForEach(p => { TCN_Lote_X_Servicos.DeletarLote_X_Servicos(new TRegistro_Lote_X_Servicos() { Cd_empresa = val.Cd_empresa, Id_lote = val.Id_lote, Id_os = p.Id_os }, qtb_lote.Banco_Dados); }); //Deletar Lote qtb_lote.DeletarLoteOS(val); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro deletar lote: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }
public static void EstornarProcessamentoLoteOS(TRegistro_LoteOS val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_LoteOS qtb_lote = new TCD_LoteOS(); try { if (banco == null) { st_transacao = qtb_lote.CriarBanco_Dados(true); } else { qtb_lote.Banco_Dados = banco; } //Verificar se o pedido amarrado ao lote nao esta cancelado object obj = new CamadaDados.Faturamento.Pedido.TCD_Pedido().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_ose_lote x " + "where x.nr_pedido = a.nr_pedido " + "and x.cd_empresa = '" + val.Cd_empresa.Trim() + "' " + "and x.id_lote = " + val.Id_lotestr + ")" }, new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new TpBusca() { vNM_Campo = "isnull(a.st_pedido, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, "a.nr_pedido"); if (obj != null) { throw new Exception("Para estornar processamento do lote é necessario cancelar antes o pedido " + obj.ToString() + "."); } //Voltar status do lote para A - Aberto val.St_registro = "A"; qtb_lote.GravarLoteOS(val); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_lote.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro estornar processamento lote: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_lote.deletarBanco_Dados(); } } }