public static void ProcessarAplicacaoPedido(TList_RegLanFaturamento lNotas, decimal Qtd_saldoAplicar, TObjetoBanco banco) { bool st_transacao = false; TCD_LanAplicacaoPedido qtb_aplic = new TCD_LanAplicacaoPedido(); try { if (banco == null) { st_transacao = qtb_aplic.CriarBanco_Dados(true); } else { qtb_aplic.Banco_Dados = banco; } lNotas.ForEach(p => p.lTicketAplicar.ForEach(v => GravarAplicacaoPedido(v.Cd_empresa, Qtd_saldoAplicar, p, qtb_aplic.Banco_Dados))); if (st_transacao) { qtb_aplic.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_aplic.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro processar aplicação: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_aplic.deletarBanco_Dados(); } } }
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(); } } }