Ejemplo n.º 1
0
        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();
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }