public static void GerarTransferencia(CamadaDados.Graos.TRegistro_Transferencia rTransf) { rTransf.Reg_Clifor_Destino = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Destino[0].CD_Clifor, null); rTransf.Reg_Clifor_Origem = CamadaNegocio.Financeiro.Cadastros.TCN_CadClifor.Busca_Clifor_Codigo(rTransf.Transf_X_Contrato_Origem[0].CD_Clifor, null); using (TFLanCompDevol_NF fCompDevol = new TFLanCompDevol_NF()) { fCompDevol.Cd_empresa = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa; fCompDevol.Nr_pedido = rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString(); fCompDevol.Cd_produto = rTransf.Transf_X_Contrato_Origem[0].Cd_produto; fCompDevol.Cd_clifor = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor; fCompDevol.Tp_operacao = "D"; fCompDevol.Tp_movimento = "E"; fCompDevol.Quantidade = rTransf.QTD_Transf; fCompDevol.Valor = rTransf.VL_Sub_Total_Origem; if (fCompDevol.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.Complemento_Devolucao = fCompDevol.ListaCompDev; #region Nota Fiscal Origem //Buscar registro contrato de origem rTransf.Contrato_Origem = CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty, rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null)[0]; rTransf.rNfOrigem = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieOrigem = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido x " + "where x.cfg_pedido = a.cfg_pedido " + "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Origem[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'DF'" //Devolução Fiscal, não movimenta estoque } }, 1, string.Empty); if (lSerieOrigem.Count > 0) { rTransf.rNfOrigem.Nr_serie = lSerieOrigem[0].Nr_serie; rTransf.rNfOrigem.Ds_serienf = lSerieOrigem[0].Ds_serienf; rTransf.rNfOrigem.Cd_modelo = lSerieOrigem[0].Cd_modelo; rTransf.rNfOrigem.Cd_movimentacao = lSerieOrigem[0].Cd_movto; rTransf.rNfOrigem.Cd_cmi = lSerieOrigem[0].Cd_cmi; rTransf.rNfOrigem.Tp_movimento = "S"; rTransf.rNfOrigem.Tp_nota = "P"; rTransf.rNfOrigem.Dt_emissao = rTransf.DT_Lancto; rTransf.rNfOrigem.Dt_saient = rTransf.DT_Lancto; using (TFNumero_Nota Numero_Nota = new TFNumero_Nota()) { Numero_Nota.Text = "Dados Nota Fiscal Devolução"; Numero_Nota.pCd_empresa = rTransf.Transf_X_Contrato_Origem[0].CD_Empresa; Numero_Nota.pNm_empresa = rTransf.Transf_X_Contrato_Origem[0].NM_Empresa; Numero_Nota.pCd_clifor = rTransf.Transf_X_Contrato_Origem[0].CD_Clifor; Numero_Nota.pNm_clifor = rTransf.Transf_X_Contrato_Origem[0].NM_Clifor; Numero_Nota.pNr_serie = lSerieOrigem[0].Nr_serie; Numero_Nota.pDs_serie = lSerieOrigem[0].Ds_serienf; Numero_Nota.pCd_modelo = lSerieOrigem[0].Cd_modelo; Numero_Nota.pTp_movimento = "S"; Numero_Nota.pTp_nota = "P"; Numero_Nota.pDt_emissao = rTransf.DT_Lancto; Numero_Nota.pDt_saient = rTransf.DT_Lancto; Numero_Nota.pSt_sequenciaauto = lSerieOrigem[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); Numero_Nota.pTp_pessoa = rTransf.Reg_Clifor_Origem.Tp_pessoa; Numero_Nota.pCd_movto = rTransf.rNfOrigem.Cd_movimentacaostring; Numero_Nota.pCd_cmi = rTransf.rNfOrigem.Cd_cmistring; //Buscar insc. estadual origem object obj_inscorigem = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Origem.Cd_endereco.Trim() + "'" } }, "a.insc_estadual"); if (obj_inscorigem != null) { Numero_Nota.pInsc_estadual = obj_inscorigem.ToString(); } if (Numero_Nota.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.rNfOrigem.Nr_serie = Numero_Nota.pNr_serie; rTransf.rNfOrigem.Cd_modelo = Numero_Nota.pCd_modelo; rTransf.rNfOrigem.Tp_movimento = Numero_Nota.pTp_movimento; rTransf.rNfOrigem.Tp_nota = Numero_Nota.pTp_nota; rTransf.rNfOrigem.Dt_emissao = Numero_Nota.pDt_emissao; rTransf.rNfOrigem.Dt_saient = Numero_Nota.pDt_saient; rTransf.rNfOrigem.St_sequenciaauto = Numero_Nota.pSt_sequenciaauto;; rTransf.rNfOrigem.Obsfiscal = Numero_Nota.pDs_obsfiscal; rTransf.rNfOrigem.Dadosadicionais = Numero_Nota.pDs_dadosadic; rTransf.rNfOrigem.Chave_acesso_nfe = Numero_Nota.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(Numero_Nota.pNr_notafiscal)) { rTransf.rNfOrigem.Nr_notafiscal = decimal.Parse(Numero_Nota.pNr_notafiscal); } else { rTransf.rNfOrigem.Nr_notafiscal = null; } if (rTransf.rNfOrigem.Cd_cmistring.Trim() != Numero_Nota.pCd_cmi.Trim()) { CamadaDados.Fiscal.TRegistro_CadCMI rCmi = CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota.pCd_cmi, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, null)[0]; rTransf.rNfOrigem.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI() { St_compdevimposto = rCmi.St_compdevimposto, St_complementar = rCmi.St_complementar, St_devolucao = rCmi.St_devolucao, St_geraestoque = rCmi.St_geraestoque, St_mestra = rCmi.St_mestra, St_simplesremessa = rCmi.St_simplesremessa, St_retorno = rCmi.St_retorno }); rTransf.rNfOrigem.Cd_cmistring = Numero_Nota.pCd_cmi; rTransf.rNfOrigem.Ds_cmi = rCmi.Ds_cmi; rTransf.rNfOrigem.Tp_duplicata = rCmi.Tp_duplicata; rTransf.rNfOrigem.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal de origem."); } } } else { throw new Exception("Não existe configuração fiscal de TRANSFERENCIA para o contrato de origem " + rTransf.Transf_X_Contrato_Origem[0].NR_Contrato.ToString() + "."); } #endregion #region Nota Fiscal Destino //Buscar pedido destino rTransf.Contrato_Destino = CamadaNegocio.Graos.TCN_CadContrato.BuscarContrato(string.Empty, rTransf.Transf_X_Contrato_Destino[0].Nr_contratostr, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, null)[0]; rTransf.rNfDestino = new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento(); CamadaDados.Faturamento.Cadastros.TList_CadCFGPedidoFiscal lSerieDestino = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido x " + "where x.cfg_pedido = a.cfg_pedido " + "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'TF'" } }, 1, string.Empty); if (lSerieDestino.Count > 0) { rTransf.rNfDestino.Nr_serie = lSerieDestino[0].Nr_serie; rTransf.rNfDestino.Ds_serienf = lSerieDestino[0].Ds_serienf; rTransf.rNfDestino.Cd_modelo = lSerieDestino[0].Cd_modelo; rTransf.rNfDestino.Cd_movimentacao = lSerieDestino[0].Cd_movto; rTransf.rNfDestino.Cd_cmi = lSerieDestino[0].Cd_cmi; rTransf.rNfDestino.Tp_movimento = "E"; rTransf.rNfDestino.Dt_emissao = rTransf.DT_Lancto; rTransf.rNfDestino.Dt_saient = rTransf.DT_Lancto; using (TFNumero_Nota Numero_Nota_Destino = new TFNumero_Nota()) { Numero_Nota_Destino.Text = "Dados Nota Fiscal Entrada"; Numero_Nota_Destino.pCd_empresa = rTransf.Transf_X_Contrato_Destino[0].CD_Empresa; Numero_Nota_Destino.pNm_empresa = rTransf.Transf_X_Contrato_Destino[0].NM_Empresa; Numero_Nota_Destino.pCd_clifor = rTransf.Transf_X_Contrato_Destino[0].CD_Clifor; Numero_Nota_Destino.pNm_clifor = rTransf.Transf_X_Contrato_Destino[0].NM_Clifor; Numero_Nota_Destino.pNr_serie = lSerieDestino[0].Nr_serie; Numero_Nota_Destino.pDs_serie = lSerieDestino[0].Ds_serienf; Numero_Nota_Destino.pCd_modelo = lSerieDestino[0].Cd_modelo; Numero_Nota_Destino.pTp_movimento = "E"; Numero_Nota_Destino.pDt_emissao = rTransf.DT_Lancto; Numero_Nota_Destino.pDt_saient = rTransf.DT_Lancto; Numero_Nota_Destino.pSt_sequenciaauto = lSerieDestino[0].ST_SequenciaAuto.Trim().ToUpper().Equals("S"); Numero_Nota_Destino.pTp_pessoa = rTransf.Reg_Clifor_Destino.Tp_pessoa; Numero_Nota_Destino.pCd_movto = rTransf.rNfDestino.Cd_movimentacaostring; Numero_Nota_Destino.pCd_cmi = rTransf.rNfDestino.Cd_cmistring; //Buscar insc. estadual origem object obj_inscdestino = new CamadaDados.Financeiro.Cadastros.TCD_CadEndereco().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_clifor", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Destino.Cd_clifor.Trim() + "'" }, new TpBusca() { vNM_Campo = "a.cd_endereco", vOperador = "=", vVL_Busca = "'" + rTransf.Contrato_Destino.Cd_endereco.Trim() + "'" } }, "a.insc_estadual"); if (obj_inscdestino != null) { Numero_Nota_Destino.pInsc_estadual = obj_inscdestino.ToString(); } Numero_Nota_Destino.pTp_nota = (CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.validarST_Nota("E", Numero_Nota_Destino.pTp_pessoa, rTransf.Reg_Clifor_Destino.St_equiparado_pjbool, rTransf.Reg_Clifor_Destino.St_agropecuariabool).Equals(0) ? "P" : "T"); if (Numero_Nota_Destino.ShowDialog() == System.Windows.Forms.DialogResult.OK) { rTransf.rNfDestino.Nr_serie = Numero_Nota_Destino.pNr_serie; rTransf.rNfDestino.Cd_modelo = Numero_Nota_Destino.pCd_modelo; rTransf.rNfDestino.Tp_movimento = Numero_Nota_Destino.pTp_movimento; rTransf.rNfDestino.Tp_nota = Numero_Nota_Destino.pTp_nota; rTransf.rNfDestino.Dt_emissao = Numero_Nota_Destino.pDt_emissao; rTransf.rNfDestino.Dt_saient = Numero_Nota_Destino.pDt_saient; rTransf.rNfDestino.Obsfiscal = Numero_Nota_Destino.pDs_obsfiscal; rTransf.rNfDestino.Dadosadicionais = Numero_Nota_Destino.pDs_dadosadic; rTransf.rNfDestino.Chave_acesso_nfe = Numero_Nota_Destino.pChave_Acesso_NFe; if (!string.IsNullOrEmpty(Numero_Nota_Destino.pNr_notafiscal)) { rTransf.rNfDestino.Nr_notafiscal = decimal.Parse(Numero_Nota_Destino.pNr_notafiscal); } else { rTransf.rNfDestino.Nr_notafiscal = null; } rTransf.rNfDestino.St_sequenciaauto = Numero_Nota_Destino.pSt_sequenciaauto; if (rTransf.rNfDestino.Cd_cmistring.Trim() != Numero_Nota_Destino.pCd_cmi.Trim()) { CamadaDados.Fiscal.TRegistro_CadCMI rCmi = CamadaNegocio.Fiscal.TCN_CadCMI.Busca(Numero_Nota_Destino.pCd_cmi, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, null)[0]; rTransf.rNfDestino.Cminf.Add(new CamadaDados.Faturamento.NotaFiscal.TRegistro_LanFaturamento_CMI() { St_compdevimposto = rCmi.St_compdevimposto, St_complementar = rCmi.St_complementar, St_devolucao = rCmi.St_devolucao, St_geraestoque = rCmi.St_geraestoque, St_mestra = rCmi.St_mestra, St_simplesremessa = rCmi.St_simplesremessa, St_retorno = rCmi.St_retorno }); rTransf.rNfDestino.Cd_cmistring = Numero_Nota_Destino.pCd_cmi; rTransf.rNfDestino.Ds_cmi = rCmi.Ds_cmi; rTransf.rNfDestino.Tp_duplicata = rCmi.Tp_duplicata; rTransf.rNfDestino.Ds_tpduplicata = rCmi.ds_tpduplicata; } } else { throw new Exception("Obrigatorio informar numero da nota fiscal de destino."); } } } else { throw new Exception("Não existe configuração fiscal NORMAL para o contrato de destino " + rTransf.Transf_X_Contrato_Destino[0].NR_Contrato.ToString() + "."); } #endregion rTransf.Duplicata_Origem = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Origem[0], rTransf.VL_Sub_Total_Origem, rTransf.DT_Lancto, "O"); rTransf.Duplicata_Destino = TProcessaDevAquisicao.Gera_Financeiro(rTransf.Transf_X_Contrato_Destino[0], rTransf.VL_Sub_Total_Destino, rTransf.DT_Lancto, "D"); if ((rTransf.Duplicata_Origem != null) && (rTransf.Duplicata_Destino != null)) { rTransf.Contrato_Origem.Pedido_Fiscal = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido x " + "where x.cfg_pedido = a.cfg_pedido " + "and x.nr_pedido = " + rTransf.Contrato_Origem.Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'DF'" } }, 1, string.Empty); rTransf.Reg_Produto_Origem = CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Origem[0].Cd_produto, null); rTransf.Reg_Empresa_Origem = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Origem[0].CD_Empresa, string.Empty, string.Empty, null)[0]; CamadaDados.Faturamento.Pedido.TList_Pedido List_Contrato_Destino = new CamadaDados.Faturamento.Pedido.TList_Pedido(); rTransf.Contrato_Destino.Pedido_Fiscal = new CamadaDados.Faturamento.Cadastros.TCD_CadCFGPedidoFiscal().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_pedido x " + "where x.cfg_pedido = a.cfg_pedido " + "and x.nr_pedido = " + rTransf.Transf_X_Contrato_Destino[0].Nr_pedido.ToString() + ")" }, new TpBusca() { vNM_Campo = "a.tp_fiscal", vOperador = "=", vVL_Busca = "'TF'" } }, 1, string.Empty); rTransf.Reg_Produto_Destino = CamadaNegocio.Estoque.Cadastros.TCN_CadProduto.Busca_Produto_Codigo(rTransf.Transf_X_Contrato_Destino[0].Cd_produto, null); rTransf.Reg_Empresa_Destino = CamadaNegocio.Diversos.TCN_CadEmpresa.Busca(rTransf.Transf_X_Contrato_Destino[0].CD_Empresa, string.Empty, string.Empty, null)[0]; } else { throw new Exception("Verifique os dados das Duplicatas."); } } else { throw new Exception("Obrigatório informar as notas a serem Devolvidas."); } } }
private void CancelarNFe() { if (string.IsNullOrEmpty(cd_empresa.Text)) { MessageBox.Show("Obrigatorio informar empresa.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cbSerie.SelectedItem == null) { MessageBox.Show("Obrigatorio informar serie.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); cbSerie.Focus(); return; } if (string.IsNullOrEmpty(nr_notafiscal.Text)) { MessageBox.Show("Obrigatorio informar " + (St_nfce ? "NFCe" : "NFe") + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); nr_notafiscal.Focus(); return; } if (St_nfce) { CamadaDados.Faturamento.PDV.TList_NFCe lNFCe = CamadaNegocio.Faturamento.PDV.TCN_NFCe.Buscar(string.Empty, nr_notafiscal.Text, cd_empresa.Text, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, cbSerie.SelectedValue.ToString(), string.Empty, false, string.Empty, string.Empty, 1, null); if (lNFCe.Count > 0) { List <CamadaDados.Faturamento.PDV.TRegistro_VendaRapida> lVenda = null; if (lNFCe[0].St_registro.Trim().ToUpper().Equals("C")) { MessageBox.Show("NFCe ja se encontra CANCELADA.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string msg = string.Empty; if (lNFCe[0].Id_contingencia.HasValue && !lNFCe[0].Nr_protocolo.HasValue) { msg = "NFCe emitida em CONTINGÊNCIA OFFLINE e ainda não transmitida para a receita.\r\n" + "O cancelamento desta NFCe somente ocorrerá após o envio da mesma para receita."; } if (MessageBox.Show((string.IsNullOrEmpty(msg) ? string.Empty : msg + "\r\n") + "Confirma cancelamento NFCe?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { try { bool st_cancelar = true; //Verificar se o NFCe esta vinculado a NFe object obj = new CamadaDados.Faturamento.NotaFiscal.TCD_LanFaturamento().BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fat_ecfvinculadoNF x " + "where x.cd_empresa = a.cd_empresa " + "and x.nr_lanctofiscal = a.nr_lanctofiscal " + "and x.cd_empresa = '" + lNFCe[0].Cd_empresa.Trim() + "' " + "and x.id_cupom = " + lNFCe[0].Id_nfcestr + ")" } }, "a.nr_notafiscal"); if (obj != null) { MessageBox.Show("NFCe Nº" + lNFCe[0].Id_nfcestr + " esta vinculado a NFe Nº" + obj.ToString() + ".\r\n" + "Para cancelar NFCe obrigatório antes cancelar NFe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (lNFCe[0].Nr_protocolo.HasValue || lNFCe[0].Id_contingencia.HasValue) { string motivo = string.Empty; CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = null; CamadaDados.Faturamento.Cadastros.TList_Evento lEv = null; //Verificar evento CamadaDados.Faturamento.PDV.TList_EventoNFCe lEvento = CamadaNegocio.Faturamento.PDV.TCN_EventoNFCe.Buscar(lNFCe[0].Cd_empresa, lNFCe[0].Id_nfcestr, string.Empty, null); if (lEvento.Count.Equals(0)) { if (string.IsNullOrEmpty(motivo)) { InputBox ibp = new InputBox(); ibp.Text = "Motivo Cancelamento NFCe"; motivo = ibp.ShowDialog(); if (string.IsNullOrEmpty(motivo)) { MessageBox.Show("Obrigatorio informar motivo de cancelamento da NFCe.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (motivo.Trim().Length < 15) { MessageBox.Show("Motivo de cancelamento deve ter mais que 15 caracteres.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } //Buscar evento Cancelamento if (lEv == null) { lEv = CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "CA", null); } if (lEv.Count.Equals(0)) { MessageBox.Show("Não existe evento de CANCELAMENTO NFE cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Cancelar NFe Receita CamadaDados.Faturamento.PDV.TRegistro_EventoNFCe rEvento = new CamadaDados.Faturamento.PDV.TRegistro_EventoNFCe(); rEvento.Cd_empresa = lNFCe[0].Cd_empresa; rEvento.Id_cupom = lNFCe[0].Id_nfce; rEvento.Chave_acesso_nfce = lNFCe[0].Chave_acesso; rEvento.Nr_protocoloNFCe = lNFCe[0].Nr_protocolo; rEvento.Dt_evento = CamadaDados.UtilData.Data_Servidor(); rEvento.Justificativa = motivo; rEvento.Cd_eventostr = lEv[0].Cd_eventostr; rEvento.Tp_evento = lEv[0].Tp_evento; rEvento.Ds_evento = lEv[0].Ds_evento; rEvento.St_registro = "A"; CamadaNegocio.Faturamento.PDV.TCN_EventoNFCe.Gravar(rEvento, null); lEvento.Add(rEvento); } if (!lEvento[0].St_registro.Trim().ToUpper().Equals("T") && lNFCe[0].Nr_protocolo.HasValue) { //Buscar CfgNfe para a empresa if (lCfg == null) { lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); } if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNFCe[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { msg = NFCe.EventoNFCe.TEventoNFCe.EnviarEvento(lEvento[0], lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + ".", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); st_cancelar = false; } } } } if (st_cancelar) { if (!lNFCe[0].Nr_protocolo.HasValue && !lNFCe[0].Id_contingencia.HasValue) { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfgNfCe = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfgNfCe.Count.Equals(0)) { MessageBox.Show("Não existe configuração NFC-e para a empresa " + lNFCe[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Consultar Chave string ret = NFCe.ConsultaChave.TConsultaChave.ConsultaChave(lNFCe[0].Chave_acesso, "1", lCfgNfCe[0]); if (!string.IsNullOrEmpty(ret)) { MessageBox.Show("Não é permtido excluir cupom com chave de acesso existente na receita.\r\n" + ret, "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } } CamadaNegocio.Faturamento.PDV.TCN_NFCe.CancelarCF(lNFCe[0], null); MessageBox.Show("NFCe cancelada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); if (!lNFCe[0].Nr_protocolo.HasValue && !lNFCe[0].Id_contingencia.HasValue) { CamadaDados.Faturamento.Cadastros.TList_CadSequenciaNF lSeq = CamadaNegocio.Faturamento.Cadastros.TCN_CadSequenciaNF.Busca(lNFCe[0].Nr_serie, lNFCe[0].Cd_modelo, lNFCe[0].Cd_empresa, null); if (lSeq.Count > 0) { if (lSeq[0].Seq_NotaFiscal.Equals(lNFCe[0].NR_NFCe)) { lSeq[0].Seq_NotaFiscal--; CamadaNegocio.Faturamento.Cadastros.TCN_CadSequenciaNF.Gravar(lSeq[0], null); MessageBox.Show("Sequencia de numeração da serie voltada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Buscar configuracao nfe CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfgNfe = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNFCe[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfgNfe.Count > 0) { try { //Inutilizar numero nota NFCe.InutilizaNFCe.TInutilizaNFCe.InutilizarNFCe(lCfgNfe[0].Cd_uf_empresa, lCfgNfe[0].Cnpj_empresa, lNFCe[0].Nr_serie, lNFCe[0].Cd_modelo, DateTime.Now.Year.ToString(), lNFCe[0].NR_NFCe.Value, lNFCe[0].NR_NFCe.Value, "NUMERO INUTILIZADO DEVIDO A ERRO NA EMISSAO DA NFCe", lCfgNfe[0]); MessageBox.Show("Numero INUTILIZADO com sucesso na receita.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } else { CamadaDados.Faturamento.NotaFiscal.TList_RegLanFaturamento lNf = CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.Busca(cd_empresa.Text, nr_notafiscal.Text, cbSerie.SelectedValue.ToString(), string.Empty, string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, true, string.Empty, string.Empty, "S", string.Empty, "A", string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, "'P'", string.Empty, false, string.Empty, string.Empty, string.Empty, 1, string.Empty, null); if (lNf.Count > 0) { try { //Verificar se NFe ja nao foi cancelada junto a receita CamadaDados.Faturamento.NFE.TList_EventoNFe lEvento = CamadaNegocio.Faturamento.NFE.TCN_EventoNFe.Buscar(string.Empty, lNf[0].Cd_empresa, lNf[0].Nr_lanctofiscal.ToString(), string.Empty, string.Empty, "CA", string.Empty, null); if (lEvento.Count.Equals(0) ? false : lEvento[0].St_registro.Trim().ToUpper().Equals("T")) { //Cancelar somente NFe no Aliance.NET CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(lNf[0].Cd_empresa, string.Empty, lNf[0].Nr_pedidostring, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, false, 1, string.Empty, null); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); Close(); } else { if (lEvento.Count.Equals(0)) { InputBox ibp = new InputBox(); ibp.Text = "Motivo Cancelamento Nota Fiscal"; string motivo = ibp.ShowDialog(); if (string.IsNullOrEmpty(motivo)) { MessageBox.Show("Obrigatorio informar motivo de cancelamento da nota fiscal.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (motivo.Trim().Length < 15) { MessageBox.Show("Motivo de cancelamento deve ter mais que 15 caracteres.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Buscar evento Carta Correcao CamadaDados.Faturamento.Cadastros.TList_Evento lEv = CamadaNegocio.Faturamento.Cadastros.TCN_Evento.Buscar(string.Empty, string.Empty, "CA", null); if (lEv.Count.Equals(0)) { MessageBox.Show("Não existe evento de CANCELAMENTO NFE cadastrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //Cancelar NFe Receita CamadaDados.Faturamento.NFE.TRegistro_EventoNFe rEvento = new CamadaDados.Faturamento.NFE.TRegistro_EventoNFe(); rEvento.Cd_empresa = lNf[0].Cd_empresa; rEvento.Nr_lanctofiscal = lNf[0].Nr_lanctofiscal; rEvento.Chave_acesso_nfe = lNf[0].Chave_acesso_nfe; rEvento.Nr_protocoloNfe = lNf[0].Nr_protocolo; rEvento.Dt_evento = CamadaDados.UtilData.Data_Servidor(); rEvento.Ds_evento = motivo; rEvento.Cd_eventostr = lEv[0].Cd_eventostr; rEvento.Descricao_evento = lEv[0].Ds_evento; rEvento.Tp_evento = lEv[0].Tp_evento; rEvento.St_registro = "A"; CamadaNegocio.Faturamento.NFE.TCN_EventoNFe.Gravar(rEvento, null); if (MessageBox.Show("Evento de CANCELAMENTO gravado com sucesso.\r\n" + "Deseja enviar o mesmo para a receita?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNf[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNf[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(rEvento, lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + "\r\n" + "Obs.: A NFe não será cancelada no sistema Aliance.NET enquanto a mesma não for cancelada junto a receita.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento registrado e vinculado a NF-e.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = new CamadaDados.Faturamento.Pedido.TCD_Pedido().Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.nr_pedido", vOperador = "=", vVL_Busca = lNf[0].Nr_pedidostring }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.nr_pedido = a.nr_pedido)" } }, 1, string.Empty); if (lPed.Count > 0) { CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); } //Cancelar venda rapida nota entrega futura CamadaDados.Faturamento.PDV.TList_VendaRapida lVendaEF = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_vendarapida_x_entregafutura x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_cupom = a.id_cupom " + "and x.cd_empresa = '" + lNf[0].Cd_empresa.Trim() + "' " + "and x.nr_lanctofiscal = " + lNf[0].Nr_lanctofiscalstr + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVendaEF, null); Close(); } } } } else { //Buscar CfgNfe para a empresa CamadaDados.Faturamento.Cadastros.TList_CfgNfe lCfg = CamadaNegocio.Faturamento.Cadastros.TCN_CfgNfe.Buscar(lNf[0].Cd_empresa, string.Empty, string.Empty, null); if (lCfg.Count.Equals(0)) { MessageBox.Show("Não existe configuração para envio de evento para a empresa " + lNf[0].Cd_empresa.Trim() + ".", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { string msg = srvNFE.Evento.TEventoNFe.EnviarEvento(lEvento[0], lCfg[0]); if (!string.IsNullOrEmpty(msg)) { MessageBox.Show("Erro ao enviar evento CANCELAMENTO para a receita.\r\n" + "Aguarde um tempo e tente novamente.\r\n" + "Erro: " + msg.Trim() + "\r\n" + "Obs.: A NFe não será cancelada no sistema Aliance.NET enquanto a mesma não for cancelada junto a receita.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Evento registrado e vinculado a NF-e.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); CamadaNegocio.Faturamento.NotaFiscal.TCN_LanFaturamento.CancelarFaturamento(lNf[0], null); MessageBox.Show("NF-e cancelada com sucesso no sistema Aliance.NET", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information); //Cancelar pedido CamadaDados.Faturamento.Pedido.TList_Pedido lPed = CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Busca(lNf[0].Cd_empresa, string.Empty, lNf[0].Nr_pedidostring, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, false, false, false, false, false, false, false, false, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, decimal.Zero, string.Empty, string.Empty, false, 1, string.Empty, null); CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Deleta_Pedido(lPed[0], null); //Cancelar venda rapida CamadaDados.Faturamento.PDV.TList_VendaRapida lVenda = new CamadaDados.Faturamento.PDV.TCD_VendaRapida().Select( new TpBusca[] { new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_pdv_pedido_x_vendarapida x " + "where x.cd_empresa = a.cd_empresa " + "and x.id_vendarapida = a.id_cupom " + "and x.nr_pedido = " + lNf[0].Nr_pedidostring + ")" } }, 0, string.Empty, string.Empty); CamadaNegocio.Faturamento.PDV.TCN_VendaRapida.ExcluirVendaRapida(lVenda, null); Close(); } } } } } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message.Trim()); } } } }
private 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); } }