Beispiel #1
0
        public static string Excluir(TRegistro_Lan_Provisao_Estoque val, TObjetoBanco banco)
        {
            TCD_Lan_Provisao_Estoque QTB_Provisao_Estoque = new TCD_Lan_Provisao_Estoque();
            bool pode_liberar = false;

            try
            {
                if (banco == null)
                {
                    pode_liberar = QTB_Provisao_Estoque.CriarBanco_Dados(true);
                }
                else
                {
                    QTB_Provisao_Estoque.Banco_Dados = banco;
                }

                if (val.Lan_Estoque.Count > 0)
                {
                    TCN_LanEstoque.DeletarEstoque(val.Lan_Estoque[0], QTB_Provisao_Estoque.Banco_Dados);
                }
                TCN_Prov_X_Estoque.Buscar(val.Cd_empresa_prov,
                                          val.Id_provisao.Value.ToString(),
                                          QTB_Provisao_Estoque.Banco_Dados).ForEach(p =>
                                                                                    TCN_Prov_X_Estoque.Excluir(p, QTB_Provisao_Estoque.Banco_Dados));
                QTB_Provisao_Estoque.Excluir(val);

                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir provisao: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.deletarBanco_Dados();
                }
            }
        }
Beispiel #2
0
        public static string Gravar(TRegistro_Lan_Provisao_Estoque val, TObjetoBanco banco)
        {
            TCD_Lan_Provisao_Estoque QTB_Provisao_Estoque = new TCD_Lan_Provisao_Estoque();
            bool pode_liberar = false;

            try
            {
                if (banco == null)
                {
                    pode_liberar = QTB_Provisao_Estoque.CriarBanco_Dados(true);
                }
                else
                {
                    QTB_Provisao_Estoque.Banco_Dados = banco;
                }

                //Gravar Lancamento Estoque
                val.Id_lanctoestoque_prov = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(
                                                                  TCN_LanEstoque.GravarEstoque(
                                                                      new TRegistro_LanEstoque()
                {
                    Cd_empresa    = val.Cd_empresa_prov,
                    Cd_produto    = val.Cd_produto_prov,
                    Tp_lancto     = "P",
                    Tp_movimento  = "E",
                    Cd_local      = val.Cd_local,
                    Ds_observacao = val.Ds_provisao,
                    Dt_lancto     = val.Dt_lancto,
                    Qtd_entrada   = val.Quantidade,
                    Qtd_saida     = decimal.Zero,
                    Vl_unitario   = val.Vl_unitario,
                    Vl_subtotal   = val.Quantidade * val.Vl_unitario
                }, QTB_Provisao_Estoque.Banco_Dados), "@@P_ID_LANCTOESTOQUE"));
                //Gravar Provisao
                val.Id_provisao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(QTB_Provisao_Estoque.Gravar(val), "@P_ID_PROVISAO"));
                //Gravar Provisao X Estoque
                TCN_Prov_X_Estoque.Gravar(new TRegistro_Lan_Provisao_X_Estoque()
                {
                    Cd_empresa       = val.Cd_empresa_prov,
                    Cd_produto       = val.Cd_produto_prov,
                    Id_lanctoestoque = val.Id_lanctoestoque_prov,
                    Id_provisao      = val.Id_provisao
                }, QTB_Provisao_Estoque.Banco_Dados);
                //Contabilizar Provisao
                System.Collections.Generic.List <CamadaDados.Contabil.TRegistro_Lan_ProcProvEstoque> lProv =
                    CamadaNegocio.Contabil.TCN_Lan_ProcContabil.BuscaProc_ProvEstoque(string.Empty,
                                                                                      val.Id_provisao.Value.ToString(),
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      decimal.Zero,
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      string.Empty,
                                                                                      decimal.Zero,
                                                                                      decimal.Zero,
                                                                                      false,
                                                                                      QTB_Provisao_Estoque.Banco_Dados);
                if (lProv != null)
                {
                    if (lProv.Exists(p => p.CD_ContaCre.HasValue && p.CD_ContaDeb.HasValue))
                    {
                        CamadaNegocio.Contabil.TCN_LanContabil.ProcessaCTB_ProvEstoque(lProv.FindAll(p => p.CD_ContaDeb.HasValue && p.CD_ContaCre.HasValue), QTB_Provisao_Estoque.Banco_Dados);
                    }
                }
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.Banco_Dados.Commit_Tran();
                }
                return(val.Id_provisao.Value.ToString());
            }
            catch (Exception ex)
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar provisao: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.deletarBanco_Dados();
                }
            }
        }
Beispiel #3
0
        public static string Baixar(TRegistro_Lan_Provisao_Estoque val, TObjetoBanco banco)
        {
            TCD_Lan_Provisao_Estoque QTB_Provisao_Estoque = new TCD_Lan_Provisao_Estoque();
            bool pode_liberar = false;

            try
            {
                if (banco == null)
                {
                    pode_liberar = QTB_Provisao_Estoque.CriarBanco_Dados(true);
                }
                else
                {
                    QTB_Provisao_Estoque.Banco_Dados = banco;
                }

                //Gravar Lancamento Estoque da Baixa
                //Buscar lancamento estoque origem
                TList_RegLanEstoque lEstoque =
                    new TCD_LanEstoque(QTB_Provisao_Estoque.Banco_Dados).Select(
                        new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_movimento",
                        vOperador = "=",
                        vVL_Busca = "'E'",
                    },
                    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_est_prov_x_estoque x " +
                                    "where x.cd_empresa = a.cd_empresa " +
                                    "and x.cd_produto = a.cd_produto " +
                                    "and x.id_lanctoestoque = a.id_lanctoestoque " +
                                    "and x.id_provisao = " + val.Id_provisao.Value.ToString() + ")"
                    }
                }, 1, string.Empty, string.Empty, string.Empty);
                if (lEstoque.Count > 0)
                {
                    string retorno = TCN_LanEstoque.GravarEstoque(
                        new TRegistro_LanEstoque()
                    {
                        Cd_empresa   = lEstoque[0].Cd_empresa,
                        Cd_local     = lEstoque[0].Cd_local,
                        Cd_produto   = lEstoque[0].Cd_produto,
                        Dt_lancto    = CamadaDados.UtilData.Data_Servidor(),
                        Qtd_entrada  = decimal.Zero,
                        Qtd_saida    = val.Saldo_Provisao,
                        Tp_lancto    = "P",
                        Tp_movimento = "S",
                        Vl_unitario  = Math.Round(lEstoque.Average(x => decimal.Divide(x.Vl_subtotal, x.Qtd_entrada)), 7, MidpointRounding.AwayFromZero),
                        Vl_subtotal  = val.Saldo_Provisao * Math.Round(lEstoque.Average(x => decimal.Divide(x.Vl_subtotal, x.Qtd_entrada)), 7, MidpointRounding.AwayFromZero)
                    }, QTB_Provisao_Estoque.Banco_Dados);
                    //Gravar Provisao X Estoque
                    TCN_Prov_X_Estoque.Gravar(new TRegistro_Lan_Provisao_X_Estoque()
                    {
                        Cd_empresa       = CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_EMPRESA"),
                        Cd_produto       = CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_PRODUTO"),
                        Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE")),
                        Id_provisao      = val.Id_provisao
                    }, QTB_Provisao_Estoque.Banco_Dados);

                    if (pode_liberar)
                    {
                        QTB_Provisao_Estoque.Banco_Dados.Commit_Tran();
                    }
                    return(retorno);
                }
                else
                {
                    throw new Exception("Estoque de origem da provisão não foi encontrado.");
                }
            }
            catch (Exception ex)
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro baixa provisao: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                {
                    QTB_Provisao_Estoque.deletarBanco_Dados();
                }
            }
        }