Esempio n. 1
0
        public static void GerarTransferencia(CamadaDados.Graos.TRegistro_Transferencia rTransf)
        {
            rTransf.Reg_Clifor_Destino = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Destino[0].CD_Clifor, null);
            rTransf.Reg_Clifor_Origem  = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Origem[0].CD_Clifor, null);

            using (TFLanCompDevol_NF fCompDevol = new TFLanCompDevol_NF())
            {
                fCompDevol.Cd_empresa = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa;
                fCompDevol.Nr_pedido  = rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString();
                fCompDevol.Cd_produto = rTransf.Transf_X_Contrato_Origem[0].Cd_produto;
                fCompDevol.Cd_clifor  = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor;

                fCompDevol.Tp_operacao  = "D";
                fCompDevol.Tp_movimento = "E";
                fCompDevol.Quantidade   = rTransf.QTD_Transf;
                fCompDevol.Valor        = rTransf.VL_Sub_Total_Origem;

                if (fCompDevol.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    rTransf.Complemento_Devolucao = fCompDevol.ListaCompDev;

                    #region Nota Fiscal Origem
                    //Buscar registro contrato de origem
                    rTransf.Contrato_Origem =
                        CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty,
                                                                           rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString(),
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           null)[0];

                    rTransf.rNfOrigem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento();
                    CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieOrigem =
                        new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                            new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = string.Empty,
                            vOperador = "exists",
                            vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                        "where x.cfg_pedido = a.cfg_pedido " +
                                        "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString() + ")"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.tp_fiscal",
                            vOperador = "=",
                            vVL_Busca = "'DF'"            //Devolução Fiscal, não movimenta estoque
                        }
                    }, 1, string.Empty);

                    if (lSerieOrigem.Count > 0)
                    {
                        rTransf.rNfOrigem.Nr_serie        = lSerieOrigem[0].Nr_serie;
                        rTransf.rNfOrigem.Ds_serienf      = lSerieOrigem[0].Ds_serienf;
                        rTransf.rNfOrigem.Cd_modelo       = lSerieOrigem[0].Cd_modelo;
                        rTransf.rNfOrigem.Cd_movimentacao = lSerieOrigem[0].Cd_movto;
                        rTransf.rNfOrigem.Cd_cmi          = lSerieOrigem[0].Cd_cmi;
                        rTransf.rNfOrigem.Tp_movimento    = "S";
                        rTransf.rNfOrigem.Tp_nota         = "P";
                        rTransf.rNfOrigem.Dt_emissao      = rTransf.DT_Lancto;
                        rTransf.rNfOrigem.Dt_saient       = rTransf.DT_Lancto;
                        using (TFNumero_Nota Numero_Nota = new TFNumero_Nota())
                        {
                            Numero_Nota.Text              = "Dados Nota Fiscal Devolução";
                            Numero_Nota.pCd_empresa       = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa;
                            Numero_Nota.pNm_empresa       = rTransf.Transf_X_Contrato_Origem[0].NM_Empresa;
                            Numero_Nota.pCd_clifor        = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor;
                            Numero_Nota.pNm_clifor        = rTransf.Transf_X_Contrato_Origem[0].NM_Clifor;
                            Numero_Nota.pNr_serie         = lSerieOrigem[0].Nr_serie;
                            Numero_Nota.pDs_serie         = lSerieOrigem[0].Ds_serienf;
                            Numero_Nota.pCd_modelo        = lSerieOrigem[0].Cd_modelo;
                            Numero_Nota.pTp_movimento     = "S";
                            Numero_Nota.pTp_nota          = "P";
                            Numero_Nota.pDt_emissao       = rTransf.DT_Lancto;
                            Numero_Nota.pDt_saient        = rTransf.DT_Lancto;
                            Numero_Nota.pSt_sequenciaauto = lSerieOrigem[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
                            Numero_Nota.pTp_pessoa        = rTransf.Reg_Clifor_Origem.Tp_pessoa;
                            Numero_Nota.pCd_movto         = rTransf.rNfOrigem.Cd_movimentacaostring;
                            Numero_Nota.pCd_cmi           = rTransf.rNfOrigem.Cd_cmistring;
                            //Buscar insc. estadual origem
                            object obj_inscorigem = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                                new TpBusca[]
                            {
                                new TpBusca()
                                {
                                    vNM_Campo = "a.cd_clifor",
                                    vOperador = "=",
                                    vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_clifor.Trim() + "'"
                                },
                                new TpBusca()
                                {
                                    vNM_Campo = "a.cd_endereco",
                                    vOperador = "=",
                                    vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_endereco.Trim() + "'"
                                }
                            }, "a.insc_estadual");
                            if (obj_inscorigem != null)
                            {
                                Numero_Nota.pInsc_estadual = obj_inscorigem.ToString();
                            }
                            if (Numero_Nota.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                rTransf.rNfOrigem.Nr_serie         = Numero_Nota.pNr_serie;
                                rTransf.rNfOrigem.Cd_modelo        = Numero_Nota.pCd_modelo;
                                rTransf.rNfOrigem.Tp_movimento     = Numero_Nota.pTp_movimento;
                                rTransf.rNfOrigem.Tp_nota          = Numero_Nota.pTp_nota;
                                rTransf.rNfOrigem.Dt_emissao       = Numero_Nota.pDt_emissao;
                                rTransf.rNfOrigem.Dt_saient        = Numero_Nota.pDt_saient;
                                rTransf.rNfOrigem.St_sequenciaauto = Numero_Nota.pSt_sequenciaauto;;
                                rTransf.rNfOrigem.Obsfiscal        = Numero_Nota.pDs_obsfiscal;
                                rTransf.rNfOrigem.Dadosadicionais  = Numero_Nota.pDs_dadosadic;
                                rTransf.rNfOrigem.Chave_acesso_nfe = Numero_Nota.pChave_Acesso_NFe;
                                if (!string.IsNullOrEmpty(Numero_Nota.pNr_notafiscal))
                                {
                                    rTransf.rNfOrigem.Nr_notafiscal = decimal.Parse(Numero_Nota.pNr_notafiscal);
                                }
                                else
                                {
                                    rTransf.rNfOrigem.Nr_notafiscal = null;
                                }
                                if (rTransf.rNfOrigem.Cd_cmistring.Trim() != Numero_Nota.pCd_cmi.Trim())
                                {
                                    CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                                        CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota.pCd_cmi,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              null)[0];
                                    rTransf.rNfOrigem.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI()
                                    {
                                        St_compdevimposto = rCmi.St_compdevimposto,
                                        St_complementar   = rCmi.St_complementar,
                                        St_devolucao      = rCmi.St_devolucao,
                                        St_geraestoque    = rCmi.St_geraestoque,
                                        St_mestra         = rCmi.St_mestra,
                                        St_simplesremessa = rCmi.St_simplesremessa,
                                        St_retorno        = rCmi.St_retorno
                                    });
                                    rTransf.rNfOrigem.Cd_cmistring   = Numero_Nota.pCd_cmi;
                                    rTransf.rNfOrigem.Ds_cmi         = rCmi.Ds_cmi;
                                    rTransf.rNfOrigem.Tp_duplicata   = rCmi.Tp_duplicata;
                                    rTransf.rNfOrigem.Ds_tpduplicata = rCmi.ds_tpduplicata;
                                }
                            }
                            else
                            {
                                throw new Exception("Obrigatorio informar numero da nota fiscal de origem.");
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("Não existe configuração fiscal de TRANSFERENCIA para o contrato de origem " +
                                            rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString() + ".");
                    }
                    #endregion

                    #region Nota Fiscal Destino
                    //Buscar pedido destino
                    rTransf.Contrato_Destino =
                        CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty,
                                                                           rTransf.Transf_X_Contrato_Destino[0].Nr_contratostr,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           null)[0];

                    rTransf.rNfDestino = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento();
                    CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieDestino =
                        new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                            new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = string.Empty,
                            vOperador = "exists",
                            vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                        "where x.cfg_pedido = a.cfg_pedido " +
                                        "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")"
                        },
                        new TpBusca()
                        {
                            vNM_Campo = "a.tp_fiscal",
                            vOperador = "=",
                            vVL_Busca = "'TF'"
                        }
                    }, 1, string.Empty);

                    if (lSerieDestino.Count > 0)
                    {
                        rTransf.rNfDestino.Nr_serie        = lSerieDestino[0].Nr_serie;
                        rTransf.rNfDestino.Ds_serienf      = lSerieDestino[0].Ds_serienf;
                        rTransf.rNfDestino.Cd_modelo       = lSerieDestino[0].Cd_modelo;
                        rTransf.rNfDestino.Cd_movimentacao = lSerieDestino[0].Cd_movto;
                        rTransf.rNfDestino.Cd_cmi          = lSerieDestino[0].Cd_cmi;
                        rTransf.rNfDestino.Tp_movimento    = "E";
                        rTransf.rNfDestino.Dt_emissao      = rTransf.DT_Lancto;
                        rTransf.rNfDestino.Dt_saient       = rTransf.DT_Lancto;
                        using (TFNumero_Nota Numero_Nota_Destino = new TFNumero_Nota())
                        {
                            Numero_Nota_Destino.Text              = "Dados Nota Fiscal Entrada";
                            Numero_Nota_Destino.pCd_empresa       = rTransf.Transf_X_Contrato_Destino[0].CD_Empresa;
                            Numero_Nota_Destino.pNm_empresa       = rTransf.Transf_X_Contrato_Destino[0].NM_Empresa;
                            Numero_Nota_Destino.pCd_clifor        = rTransf.Transf_X_Contrato_Destino[0].CD_Clifor;
                            Numero_Nota_Destino.pNm_clifor        = rTransf.Transf_X_Contrato_Destino[0].NM_Clifor;
                            Numero_Nota_Destino.pNr_serie         = lSerieDestino[0].Nr_serie;
                            Numero_Nota_Destino.pDs_serie         = lSerieDestino[0].Ds_serienf;
                            Numero_Nota_Destino.pCd_modelo        = lSerieDestino[0].Cd_modelo;
                            Numero_Nota_Destino.pTp_movimento     = "E";
                            Numero_Nota_Destino.pDt_emissao       = rTransf.DT_Lancto;
                            Numero_Nota_Destino.pDt_saient        = rTransf.DT_Lancto;
                            Numero_Nota_Destino.pSt_sequenciaauto = lSerieDestino[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S");
                            Numero_Nota_Destino.pTp_pessoa        = rTransf.Reg_Clifor_Destino.Tp_pessoa;
                            Numero_Nota_Destino.pCd_movto         = rTransf.rNfDestino.Cd_movimentacaostring;
                            Numero_Nota_Destino.pCd_cmi           = rTransf.rNfDestino.Cd_cmistring;
                            //Buscar insc. estadual origem
                            object obj_inscdestino = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar(
                                new TpBusca[]
                            {
                                new TpBusca()
                                {
                                    vNM_Campo = "a.cd_clifor",
                                    vOperador = "=",
                                    vVL_Busca = "'" + rTransf.Contrato_Destino.Cd_clifor.Trim() + "'"
                                },
                                new TpBusca()
                                {
                                    vNM_Campo = "a.cd_endereco",
                                    vOperador = "=",
                                    vVL_Busca = "'" + rTransf.Contrato_Destino.Cd_endereco.Trim() + "'"
                                }
                            }, "a.insc_estadual");
                            if (obj_inscdestino != null)
                            {
                                Numero_Nota_Destino.pInsc_estadual = obj_inscdestino.ToString();
                            }
                            Numero_Nota_Destino.pTp_nota = (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.validarST_Nota("E", Numero_Nota_Destino.pTp_pessoa, rTransf.Reg_Clifor_Destino.St_equiparado_pjbool, rTransf.Reg_Clifor_Destino.St_agropecuariabool).Equals(0) ? "P" : "T");
                            if (Numero_Nota_Destino.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                rTransf.rNfDestino.Nr_serie         = Numero_Nota_Destino.pNr_serie;
                                rTransf.rNfDestino.Cd_modelo        = Numero_Nota_Destino.pCd_modelo;
                                rTransf.rNfDestino.Tp_movimento     = Numero_Nota_Destino.pTp_movimento;
                                rTransf.rNfDestino.Tp_nota          = Numero_Nota_Destino.pTp_nota;
                                rTransf.rNfDestino.Dt_emissao       = Numero_Nota_Destino.pDt_emissao;
                                rTransf.rNfDestino.Dt_saient        = Numero_Nota_Destino.pDt_saient;
                                rTransf.rNfDestino.Obsfiscal        = Numero_Nota_Destino.pDs_obsfiscal;
                                rTransf.rNfDestino.Dadosadicionais  = Numero_Nota_Destino.pDs_dadosadic;
                                rTransf.rNfDestino.Chave_acesso_nfe = Numero_Nota_Destino.pChave_Acesso_NFe;
                                if (!string.IsNullOrEmpty(Numero_Nota_Destino.pNr_notafiscal))
                                {
                                    rTransf.rNfDestino.Nr_notafiscal = decimal.Parse(Numero_Nota_Destino.pNr_notafiscal);
                                }
                                else
                                {
                                    rTransf.rNfDestino.Nr_notafiscal = null;
                                }
                                rTransf.rNfDestino.St_sequenciaauto = Numero_Nota_Destino.pSt_sequenciaauto;
                                if (rTransf.rNfDestino.Cd_cmistring.Trim() != Numero_Nota_Destino.pCd_cmi.Trim())
                                {
                                    CamadaDados.Fiscal.TRegistro_CadCMI rCmi =
                                        CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota_Destino.pCd_cmi,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              string.Empty,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              false,
                                                                              null)[0];
                                    rTransf.rNfDestino.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI()
                                    {
                                        St_compdevimposto = rCmi.St_compdevimposto,
                                        St_complementar   = rCmi.St_complementar,
                                        St_devolucao      = rCmi.St_devolucao,
                                        St_geraestoque    = rCmi.St_geraestoque,
                                        St_mestra         = rCmi.St_mestra,
                                        St_simplesremessa = rCmi.St_simplesremessa,
                                        St_retorno        = rCmi.St_retorno
                                    });
                                    rTransf.rNfDestino.Cd_cmistring   = Numero_Nota_Destino.pCd_cmi;
                                    rTransf.rNfDestino.Ds_cmi         = rCmi.Ds_cmi;
                                    rTransf.rNfDestino.Tp_duplicata   = rCmi.Tp_duplicata;
                                    rTransf.rNfDestino.Ds_tpduplicata = rCmi.ds_tpduplicata;
                                }
                            }
                            else
                            {
                                throw new Exception("Obrigatorio informar numero da nota fiscal de destino.");
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("Não existe configuração fiscal NORMAL para o contrato de destino " +
                                            rTransf.Transf_X_Contrato_Destino[0].NR_Contrato.ToString() + ".");
                    }
                    #endregion

                    rTransf.Duplicata_Origem = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Origem[0],
                                                                                     rTransf.VL_Sub_Total_Origem,
                                                                                     rTransf.DT_Lancto,
                                                                                     "O");
                    rTransf.Duplicata_Destino = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Destino[0],
                                                                                      rTransf.VL_Sub_Total_Destino,
                                                                                      rTransf.DT_Lancto,
                                                                                      "D");

                    if ((rTransf.Duplicata_Origem != null) && (rTransf.Duplicata_Destino != null))
                    {
                        rTransf.Contrato_Origem.Pedido_Fiscal = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = string.Empty,
                                vOperador = "exists",
                                vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                            "where x.cfg_pedido = a.cfg_pedido " +
                                            "and x.nr_pedido = " + rTransf.Contrato_Origem.Nr_pedido.ToString() + ")"
                            },
                            new TpBusca()
                            {
                                vNM_Campo = "a.tp_fiscal",
                                vOperador = "=",
                                vVL_Busca = "'DF'"
                            }
                        }, 1, string.Empty);
                        rTransf.Reg_Produto_Origem =
                            CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Origem[0].Cd_produto, null);
                        rTransf.Reg_Empresa_Origem =
                            CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Origem[0].CD_Empresa,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        null)[0];
                        CamadaDados.Faturamento.Pedido.TList_Pedido List_Contrato_Destino = new CamadaDados.Faturamento.Pedido.TList_Pedido();

                        rTransf.Contrato_Destino.Pedido_Fiscal = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = string.Empty,
                                vOperador = "exists",
                                vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                            "where x.cfg_pedido = a.cfg_pedido " +
                                            "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")"
                            },
                            new TpBusca()
                            {
                                vNM_Campo = "a.tp_fiscal",
                                vOperador = "=",
                                vVL_Busca = "'TF'"
                            }
                        }, 1, string.Empty);
                        rTransf.Reg_Produto_Destino =
                            CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Destino[0].Cd_produto, null);
                        rTransf.Reg_Empresa_Destino =
                            CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Destino[0].CD_Empresa,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        null)[0];
                    }
                    else
                    {
                        throw new Exception("Verifique os dados das Duplicatas.");
                    }
                }
                else
                {
                    throw new Exception("Obrigatório informar as notas a serem Devolvidas.");
                }
            }
        }
Esempio n. 2
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. 3
0
 private static CamadaDados.Faturamento.Pedido.TRegistro_Pedido GerarPedidoRemessa(CamadaDados.Servicos.TRegistro_LanServico val,
                                                                                   bool St_nfterceiro,
                                                                                   decimal Quantidade,
                                                                                   decimal Vl_unitario)
 {
     if (val != null)
     {
         //Buscar configuracao para emitir pedido de remessa
         CamadaDados.Servicos.Cadastros.TList_OSE_ParamOS lParam =
             CamadaNegocio.Servicos.Cadastros.TCN_OSE_ParamOS.Buscar(val.Tp_ordemstr,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     string.Empty,
                                                                     1,
                                                                     string.Empty,
                                                                     null);
         if (lParam.Count > 0)
         {
             if (!string.IsNullOrEmpty(lParam[0].Cfg_pedido_transpremessa))
             {
                 //Verificar se nao existe um pedido de remessa em aberto para este cliente
                 CamadaDados.Faturamento.Pedido.TList_Pedido lPed =
                     CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(val.Cd_empresa,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       val.Cd_clifor,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       string.Empty,
                                                                       lParam[0].Cfg_pedido_transpremessa,
                                                                       false,
                                                                       true,
                                                                       false,
                                                                       true,
                                                                       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);
                 if (lPed.Count > 0)
                 {
                     if (St_nfterceiro)
                     {
                         if (Vl_unitario > 0)
                         {
                             CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item lItem =
                                 CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_Item.Busca(string.Empty,
                                                                                           string.Empty,
                                                                                           val.CD_ProdutoOS,
                                                                                           lPed[0].Nr_pedido.ToString(),
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           false,
                                                                                           null);
                             if (lItem.Count > 0)
                             {
                                 if (Math.Round(lItem[0].Vl_unitario, 2).Equals(Math.Round(Vl_unitario)))
                                 {
                                     lItem[0].Quantidade += Quantidade;
                                     lPed[0].Pedido_Itens.Add(lItem[0]);
                                 }
                                 else
                                 {
                                     //Incluir novo item no pedido com valor unitario diferente
                                     lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                                     {
                                         Cd_Empresa       = val.Cd_empresa,
                                         Cd_local         = string.Empty,
                                         Cd_produto       = val.CD_ProdutoOS,
                                         Ds_produto       = val.DS_ProdutoOS,
                                         Cd_unidade_est   = val.Cd_unidOS,
                                         Cd_unidade_valor = val.Cd_unidOS,
                                         Quantidade       = Quantidade,
                                         Vl_unitario      = Vl_unitario,
                                         Vl_subtotal      = Quantidade * Vl_unitario
                                     });
                                 }
                             }
                             else
                             {
                                 //Incluir novo item no pedido com valor unitario diferente
                                 lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                                 {
                                     Cd_Empresa       = val.Cd_empresa,
                                     Cd_local         = string.Empty,
                                     Cd_produto       = val.CD_ProdutoOS,
                                     Ds_produto       = val.DS_ProdutoOS,
                                     Cd_unidade_est   = val.Cd_unidOS,
                                     Cd_unidade_valor = val.Cd_unidOS,
                                     Quantidade       = Quantidade,
                                     Vl_unitario      = Vl_unitario,
                                     Vl_subtotal      = Quantidade * Vl_unitario
                                 });
                             }
                         }
                         else
                         {
                             //Incluir novo item no pedido
                             lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                             {
                                 Cd_Empresa       = val.Cd_empresa,
                                 Cd_local         = string.Empty,
                                 Cd_produto       = val.CD_ProdutoOS,
                                 Ds_produto       = val.DS_ProdutoOS,
                                 Cd_unidade_est   = val.Cd_unidOS,
                                 Cd_unidade_valor = val.Cd_unidOS,
                                 Quantidade       = Quantidade,
                                 Vl_unitario      = Vl_unitario,
                                 Vl_subtotal      = Quantidade * Vl_unitario
                             });
                         }
                         lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                         return(lPed[0]);
                     }
                     else
                     {
                         CamadaDados.Faturamento.Pedido.TList_RegLanPedido_Item lItem =
                             CamadaNegocio.Faturamento.Pedido.TCN_LanPedido_Item.Busca(string.Empty,
                                                                                       string.Empty,
                                                                                       val.CD_ProdutoOS,
                                                                                       lPed[0].Nr_pedido.ToString(),
                                                                                       string.Empty,
                                                                                       string.Empty,
                                                                                       string.Empty,
                                                                                       false,
                                                                                       null);
                         if (lItem.Count > 0)
                         {
                             lItem[0].Quantidade += Quantidade;
                             lPed[0].Pedido_Itens.Add(lItem[0]);
                             lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                             return(lPed[0]);
                         }
                         else
                         {
                             decimal vl_unitario = decimal.Zero;
                             //Buscar valor medio do estoque
                             CamadaNegocio.Estoque.TCN_LanEstoque.VlMedioEstoque(val.Cd_empresa, val.CD_ProdutoOS, ref vl_unitario, null);
                             //Buscar valor da ultima compra
                             if (vl_unitario.Equals(decimal.Zero))
                             {
                                 CamadaDados.Faturamento.NotaFiscal.TListUltimasCompras lUltimaCompra =
                                     new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().Select(
                                         new Utils.TpBusca[]
                                 {
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "a.tp_movimento",
                                         vOperador = "=",
                                         vVL_Busca = "'E'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "b.cd_produto",
                                         vOperador = "=",
                                         vVL_Busca = "'" + val.CD_ProdutoOS.Trim() + "'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_Complementar, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'N'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_Devolucao, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'N'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(e.ST_GeraEstoque, 'N')",
                                         vOperador = "=",
                                         vVL_Busca = "'S'"
                                     },
                                     new Utils.TpBusca()
                                     {
                                         vNM_Campo = "ISNULL(a.ST_Registro, 'A')",
                                         vOperador = "<>",
                                         vVL_Busca = "'C'"
                                     },
                                 }, 1);
                                 if (lUltimaCompra.Count > 0)
                                 {
                                     vl_unitario = lUltimaCompra[0].Vl_unitario;
                                 }
                             }
                             //Incluir novo item no pedido
                             lPed[0].Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                             {
                                 Cd_Empresa       = val.Cd_empresa,
                                 Cd_local         = string.Empty,
                                 Cd_produto       = val.CD_ProdutoOS,
                                 Ds_produto       = val.DS_ProdutoOS,
                                 Cd_unidade_est   = val.Cd_unidOS,
                                 Cd_unidade_valor = val.Cd_unidOS,
                                 Quantidade       = Quantidade,
                                 Vl_unitario      = vl_unitario,
                                 Vl_subtotal      = Quantidade * vl_unitario
                             });
                             lPed[0].Tp_pedido = "RM";//Pedido de Remessa
                             return(lPed[0]);
                         }
                     }
                 }
                 else
                 {
                     CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
                     rPed.CD_Empresa        = val.Cd_empresa;
                     rPed.DT_Pedido         = val.Dt_abertura;
                     rPed.CFG_Pedido        = lParam[0].Cfg_pedido_transpremessa;
                     rPed.TP_Movimento      = "E"; //Pedido de entrada
                     rPed.ST_Pedido         = "F"; //Pedido fechado
                     rPed.ST_Registro       = "F"; //Pedido fechado
                     rPed.CD_Clifor         = val.Cd_clifor;
                     rPed.CD_Endereco       = val.Cd_endereco;
                     rPed.Cd_moeda          = lParam[0].Cd_moeda;
                     rPed.CD_TRANSPORTADORA = lParam[0].Cd_transportadora;
                     rPed.CD_ENDERECOTRANSP = lParam[0].Cd_enderecoTransp;
                     //Buscar valor medio do estoque
                     if (!St_nfterceiro)
                     {
                         CamadaNegocio.Estoque.TCN_LanEstoque.VlMedioEstoque(val.Cd_empresa, val.CD_ProdutoOS, ref Vl_unitario, null);
                         //Buscar valor da ultima compra
                         if (Vl_unitario.Equals(decimal.Zero))
                         {
                             CamadaDados.Faturamento.NotaFiscal.TListUltimasCompras lUltimaCompra =
                                 new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento_Item().Select(
                                     new Utils.TpBusca[]
                             {
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "a.tp_movimento",
                                     vOperador = "=",
                                     vVL_Busca = "'E'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "b.cd_produto",
                                     vOperador = "=",
                                     vVL_Busca = "'" + val.CD_ProdutoOS.Trim() + "'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_Complementar, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'N'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_Devolucao, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'N'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(e.ST_GeraEstoque, 'N')",
                                     vOperador = "=",
                                     vVL_Busca = "'S'"
                                 },
                                 new Utils.TpBusca()
                                 {
                                     vNM_Campo = "ISNULL(a.ST_Registro, 'A')",
                                     vOperador = "<>",
                                     vVL_Busca = "'C'"
                                 },
                             }, 1);
                             if (lUltimaCompra.Count > 0)
                             {
                                 Vl_unitario = lUltimaCompra[0].Vl_unitario;
                             }
                         }
                     }
                     rPed.Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                     {
                         Cd_Empresa       = val.Cd_empresa,
                         Cd_local         = string.Empty,
                         Cd_produto       = val.CD_ProdutoOS,
                         Ds_produto       = val.DS_ProdutoOS,
                         Cd_unidade_est   = val.Cd_unidOS,
                         Cd_unidade_valor = val.Cd_unidOS,
                         Quantidade       = Quantidade,
                         Vl_unitario      = Vl_unitario,
                         Vl_subtotal      = Quantidade * Vl_unitario
                     });
                     rPed.Tp_pedido = "RM"; //Pedido de remessa
                     return(rPed);
                 }
             }
             else
             {
                 throw new Exception("Não existe configuração para emitir pedido de remessa para o tipo de ordem " + val.Tp_ordemstr);
             }
         }
         else
         {
             throw new Exception("Não existe configuração para o tipo de ordem " + val.Tp_ordemstr);
         }
     }
     else
     {
         return(null);
     }
 }