Пример #1
0
        public static string Excluir(TRegistro_CadCFGPedido val, TObjetoBanco banco)
        {
            bool             st_transacao  = false;
            TCD_CadCFGPedido qtb_cfgpedido = new TCD_CadCFGPedido();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_cfgpedido.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_cfgpedido.Banco_Dados = banco;
                }
                qtb_cfgpedido.Excluir(val);
                if (st_transacao)
                {
                    qtb_cfgpedido.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_cfgpedido.Banco_Dados.RollBack_Tran();
                }
                throw new Exception(ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_cfgpedido.deletarBanco_Dados();
                }
            }
        }
Пример #2
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();
                }
            }
        }