Esempio n. 1
0
        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.");
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 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()); }
         }
     }
 }
Esempio n. 4
0
 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();
         }
     }
 }
Esempio n. 5
0
        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();
                }
            }
        }
Esempio n. 6
0
        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();
                }
            }
        }