public static string GravarAplicacaoPedido(string CD_Empresa, decimal saldoAplicar, TRegistro_LanFaturamento rNotaFiscal, TObjetoBanco banco) { TCD_LanAplicacaoPedido qtb_aplic = new TCD_LanAplicacaoPedido(); bool pode_liberar = false; try { //Start Transação if (banco == null) { pode_liberar = qtb_aplic.CriarBanco_Dados(true); } else { qtb_aplic.Banco_Dados = banco; } //Gravar Notas Fiscais da Aplicacao if (rNotaFiscal == null) { throw new Exception("Erro processar aplicação. Não existe nota para processar."); } if ((rNotaFiscal.Nr_pedido == null) || (rNotaFiscal.Nr_pedido == 0)) { throw new Exception("ERRO: Não existe pedido informado para a nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } rNotaFiscal.ItensNota.ForEach(p => { if (p.Nr_pedido.Equals(0)) { throw new Exception("ERRO: Não existe pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } if ((p.Id_pedidoitem == null) || (p.Id_pedidoitem == 0)) { throw new Exception("ERRO: Não existe item de pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString()); } TRegistro_EntregaPedido rgent = new TRegistro_EntregaPedido() { Id_entrega = null, Nr_pedido = p.Nr_pedido, Cd_produto = p.Cd_produto, Id_pedidoitem = p.Id_pedidoitem, Qtd_entregue = p.Quantidade_estoque > 0 ? p.Quantidade_estoque : p.Quantidade, Dt_entrega = rNotaFiscal.Dt_saient, Ds_observacao = "ENTREGA GRAVADA AUTOMATICAMENTE PELA APLICACAO" }; rgent.Id_entregastr = TCN_LanEntregaPedido.Gravar(rgent, qtb_aplic.Banco_Dados); //ADICIONAR A ENTREGA NA NOTAITEM PARA SER UTILIZADA NO PROCESSAMENTO DA NOTA //QUANDO FOR APLICACAO A ENTREGA A SER CUMPRIDA OBRIGATORIAMENTE SERA A GRAVADA ACIMA E NAO OUTRAS COM SALDO DISPONIVEL p.lEntrega = new TList_EntregaPedido(); p.lEntrega.Add(rgent); }); //Grava Nota Fiscal //gravar taxas de deposito separado da nota string retorno = TCN_LanFaturamento.GravarFaturamento(rNotaFiscal, false, null, qtb_aplic.Banco_Dados); //Para cada item da nota fiscal, gravar um registro aplicacao rNotaFiscal.ItensNota.ForEach(p => { if (p.rEstoque == null) { throw new Exception("Aplicação não pode ser processada. Não foi possivel gerar estoque."); } p.lTicketAplicar.ForEach(v => { TRegistro_LanAplicacaoPedido val = new TRegistro_LanAplicacaoPedido(); //Gravar Aplicação val.Cd_empresa = p.Cd_empresa; val.Id_ticket = v.Id_ticket.Value; val.Tp_pesagem = v.Tp_pesagem; val.Nr_pedido = p.Nr_pedido; val.Cd_produto = p.Cd_produto; val.Id_pedidoitem = p.Id_pedidoitem.Value; val.Id_lanctoestoque = p.rEstoque.Id_lanctoestoque; val.Qtd_aplicado = v.Ps_Aplicar; val.Vl_unitario = TCN_CadConvUnidade.ConvertUnid(v.Cd_unid_produto, v.Cd_unid_contrato, v.Vl_unit_contrato, 7, qtb_aplic.Banco_Dados); val.Vl_subtotal = Math.Round(v.Ps_Aplicar * val.Vl_unitario, 2); val.Id_aplicacao = null; val.Id_autoriz = v.Id_autoriz; string retorno_aplicacao = qtb_aplic.Gravar(val); retorno = retorno + "|" + retorno_aplicacao; val.Id_aplicacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno_aplicacao, "@P_ID_APLICACAO")); //Gravar Aplicação X Nota Fiscal retorno = retorno + "|" + TCN_LanAplicacao_NotaFiscal.GravarAplicacaoXNotaFiscal( new TRegistro_LanAplicacao_NotaFiscal() { Cd_empresa = val.Cd_empresa, Id_aplicacao = val.Id_aplicacao, Id_nfitem = p.Id_nfitem, Nr_lanctofiscal = p.Nr_lanctofiscal }, qtb_aplic.Banco_Dados); }); //Gravar Movimento Deposito TCN_MovDeposito.GravarMovDeposito(new TRegistro_MovDeposito() { Id_Movto = 0, Nr_Pedido = p.Nr_pedido, CD_Produto = p.Cd_produto, CD_Empresa = p.Cd_empresa, Id_LanctoEstoque = p.rEstoque.Id_lanctoestoque, Id_pedidoitem = p.Id_pedidoitem.Value }, qtb_aplic.Banco_Dados); //Gravar Pesagem GMO CamadaNegocio.Graos.TCN_LanRoyaltiesGMO.GravaPesagemGMO(p, rNotaFiscal.Tp_movimento, qtb_aplic.Banco_Dados); //Contrato Entrada a Fixar TRegistro_CadCFGPedido rCfg = new TCD_CadCFGPedido(qtb_aplic.Banco_Dados).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 = " + p.Nr_pedido.ToString() + ")" } }, 1, string.Empty)[0]; }); if (pode_liberar) { qtb_aplic.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (pode_liberar) { qtb_aplic.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar aplicação: " + ex.Message.Trim()); } finally { if (pode_liberar) { qtb_aplic.deletarBanco_Dados(); } } }
public static string GravaPesagemGMO(TRegistro_LanFaturamento_Item val, string vTp_Movimento, TObjetoBanco banco) { string retorno = string.Empty; TList_RegLanAplicacao_NotaFiscal lPesagemGmo = TCN_LanAplicacao_NotaFiscal.Buscar(val.Cd_empresa, val.Nr_lanctofiscal.ToString(), val.Id_nfitem.ToString(), string.Empty, false, banco); if (lPesagemGmo.Count > 0) { TList_LanAplicacaoPedido lAplicPedido = TCN_LanAplicacaoPedido.Buscar(lPesagemGmo[0].Id_aplicacao.ToString(), string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, banco); if (lAplicPedido.Count > 0) { TList_RegLanPesagemGraos lPsgraos = CamadaNegocio.Balanca.TCN_LanPesagemGraos.Busca(lAplicPedido[0].Cd_empresa, lAplicPedido[0].Id_ticket.ToString(), lAplicPedido[0].Tp_pesagem, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, decimal.Zero, string.Empty, string.Empty, 0, string.Empty, banco); if (lPsgraos.Count > 0) { //procurar GRAVA GMO NOTA TList_Lan_NotaFiscalGMO NfGMO = TCN_Lan_NotaFiscalGMO.Buscar(string.Empty, lAplicPedido[0].Cd_empresa, val.Nr_lanctofiscal.ToString(), val.Id_nfitem.ToString(), banco); decimal Id_lanctoGMO = decimal.Zero; if (lPsgraos[0].Tp_prodpesagem.Trim().ToUpper().Equals("ID") && NfGMO.Count > 0) { Id_lanctoGMO = NfGMO[0].id_LanctoGmo.Value; } else if (lPsgraos[0].Tp_prodpesagem.Trim().ToUpper().Equals("IT")) { Id_lanctoGMO = Convert.ToDecimal(GravaGMO(new TList_RegLanFaturamento_Item() { val }, true, false, vTp_Movimento, banco)); } else if (lPsgraos[0].Tp_prodpesagem.Trim().ToUpper().Equals("ID") && (NfGMO.Count < 1)) { Id_lanctoGMO = Convert.ToDecimal(GravaGMO(new TList_RegLanFaturamento_Item() { val }, false, true, vTp_Movimento, banco)); } if ((!string.IsNullOrEmpty(lAplicPedido[0].Cd_empresa)) && (lAplicPedido[0].Id_ticket > 0) && (!string.IsNullOrEmpty(lAplicPedido[0].Tp_pesagem)) && (Id_lanctoGMO > 0)) { // GRAVA O LANCTO DO PESAGEM GMO retorno += CamadaNegocio.Graos.TCN_LanPesagemGMO.Gravar(new CamadaDados.Graos.TRegistro_LanPesagemGMO() { ID_Ticket = lAplicPedido[0].Id_ticket, CD_Empresa = lAplicPedido[0].Cd_empresa, TP_Pesagem = lAplicPedido[0].Tp_pesagem, ID_LanctoGMO = Id_lanctoGMO }, banco); } } } } return(retorno); }