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 Gravar(TRegistro_TransfLocal val, BancoDados.TObjetoBanco banco)
        {
            bool            st_transacao = false;
            TCD_TransfLocal qtb_transf   = new TCD_TransfLocal();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_transf.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_transf.Banco_Dados = banco;
                }
                //Gravar Transferencia
                val.Id_transf = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(qtb_transf.Gravar(val), "@P_ID_TRANSF"));
                //Buscar valor medio do estoque
                decimal vl_estoque_medio = 0;
                if (TCN_LanEstoque.VlMedioEstoque(val.Cd_empresaorigem, val.Cd_produto, ref vl_estoque_medio, qtb_transf.Banco_Dados))
                {
                    //Gravar estoque de saida do produto do local de origem
                    string id_estoque_sai = TCN_LanEstoque.GravarEstoque(new TRegistro_LanEstoque()
                    {
                        Cd_produto   = val.Cd_produto,
                        Cd_empresa   = val.Cd_empresaorigem,
                        Cd_local     = val.Cd_localorigem,
                        Dt_lancto    = val.Dt_lancto,
                        St_registro  = "A",
                        Tp_lancto    = "T",
                        Tp_movimento = "S",
                        Qtd_saida    = val.Quantidade,
                        Qtd_entrada  = decimal.Zero,
                        Vl_unitario  = vl_estoque_medio,
                        Vl_subtotal  = vl_estoque_medio * val.Quantidade
                    }, qtb_transf.Banco_Dados);
                    //Gravar Transferencia X Estoque de saida
                    TCN_LanTransfLocal_X_Estoque.GravarTransLocal_X_Estoque(new TRegistro_LanTransfLocal_X_Estoque()
                    {
                        Id_transf        = val.Id_transf.Value,
                        Cd_empresa       = val.Cd_empresaorigem,
                        Cd_produto       = val.Cd_produto,
                        Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(id_estoque_sai, "@@P_ID_LANCTOESTOQUE"))
                    }, qtb_transf.Banco_Dados);
                    //Gravar estoque de entrada do produto no local de destino
                    string id_estoque_ent = TCN_LanEstoque.GravarEstoque(new TRegistro_LanEstoque()
                    {
                        Cd_produto   = val.Cd_produto,
                        Cd_empresa   = val.Cd_empresadestino,
                        Cd_local     = val.Cd_localdestino,
                        Dt_lancto    = val.Dt_lancto,
                        St_registro  = "A",
                        Tp_lancto    = "T",
                        Tp_movimento = "E",
                        Qtd_saida    = decimal.Zero,
                        Qtd_entrada  = val.Quantidade,
                        Vl_unitario  = vl_estoque_medio,
                        Vl_subtotal  = vl_estoque_medio * val.Quantidade
                    }, qtb_transf.Banco_Dados);
                    //Gravar Transferencia X Estoque de entrada
                    TCN_LanTransfLocal_X_Estoque.GravarTransLocal_X_Estoque(new TRegistro_LanTransfLocal_X_Estoque()
                    {
                        Id_transf        = val.Id_transf.Value,
                        Cd_empresa       = val.Cd_empresadestino,
                        Cd_produto       = val.Cd_produto,
                        Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(id_estoque_ent, "@@P_ID_LANCTOESTOQUE"))
                    }, qtb_transf.Banco_Dados);
                }
                else
                {
                    throw new Exception("Não Existe Valor Médio Para o Produto ");
                }

                if (st_transacao)
                {
                    qtb_transf.Banco_Dados.Commit_Tran();
                }

                return(val.Id_transf.Value.ToString());
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_transf.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar transf.: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_transf.deletarBanco_Dados();
                }
            }
        }
Beispiel #4
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();
                }
            }
        }
Beispiel #5
0
        public static void ProcessarInventario(Tregistro_Inventario val, TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Inventario_Item_X_Saldo qtb_saldo = new TCD_Inventario_Item_X_Saldo();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_saldo.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_saldo.Banco_Dados = banco;
                }
                TList_Inventario_Item_X_Saldo lSaldo = TCN_Inventario_Item_X_Saldo.Buscar(val.Id_inventario.Value.ToString(),
                                                                                          string.Empty,
                                                                                          string.Empty,
                                                                                          string.Empty,
                                                                                          qtb_saldo.Banco_Dados);
                lSaldo.ForEach(p =>
                {
                    //Para produtos derivados de consumo interno
                    //O sistema deve gerar lançamento no almoxarifado
                    if (p.Id_Almox != null)
                    {
                        if (p.Qtd_saldoAmx != p.Qtd_contada)
                        {
                            p.Qtd_saldo = p.Qtd_saldoAmx;
                            CamadaDados.Almoxarifado.TRegistro_Movimentacao _Movimentacao = new CamadaDados.Almoxarifado.TRegistro_Movimentacao();
                            _Movimentacao.Cd_empresa      = p.Cd_empresa;
                            _Movimentacao.LoginAlmoxarife = Parametros.pubLogin;
                            _Movimentacao.Id_almoxstr     = p.Id_Almox.ToString();
                            _Movimentacao.Cd_produto      = p.Cd_produto;
                            _Movimentacao.Dt_movimento    = CamadaDados.UtilData.Data_Servidor();
                            if (p.Qtd_saldoAmx < p.Qtd_contada)
                            {
                                _Movimentacao.Tp_movimento  = "E";
                                _Movimentacao.Quantidade    = p.Qtd_contada - p.Qtd_saldoAmx;
                                _Movimentacao.Vl_subtotal   = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual);
                                _Movimentacao.Ds_observacao = "ENTRADA DEVIDA AO INVENTÁRIO " + p.Id_inventario;
                            }
                            else
                            {
                                _Movimentacao.Tp_movimento  = "S";
                                _Movimentacao.Quantidade    = p.Qtd_saldoAmx - p.Qtd_contada;
                                _Movimentacao.Vl_subtotal   = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada);
                                _Movimentacao.Ds_observacao = "SAÍDA DEVIDA AO INVENTÁRIO " + p.Id_inventario;
                            }

                            _Movimentacao.Vl_unitario = p.Vl_unitario;

                            string retorno = CamadaNegocio.Almoxarifado.TCN_Movimentacao.Gravar(_Movimentacao, qtb_saldo.Banco_Dados);
                            //Gravar Inventario X Almoxarifado
                            TCN_Inventario_X_Estoque.GravarInventarioXEstoque(
                                new TRegistro_Inventario_X_Estoque()
                            {
                                Cd_empresa        = p.Cd_empresa,
                                Cd_produto        = p.Cd_produto,
                                Id_inventario     = p.Id_inventario,
                                Id_movimentoAlmox = Convert.ToDecimal(retorno),
                                Id_registro       = p.Id_registro
                            }, qtb_saldo.Banco_Dados);
                        }
                    }
                    else
                    {
                        if (p.Qtd_saldoatual != p.Qtd_contada)
                        {
                            //Gravar no estoque
                            TRegistro_LanEstoque regEstoque = new TRegistro_LanEstoque();
                            regEstoque.Cd_empresa           = p.Cd_empresa;
                            regEstoque.Cd_produto           = p.Cd_produto;
                            regEstoque.Cd_local             = p.Cd_local;
                            regEstoque.Dt_lancto            = CamadaDados.UtilData.Data_Servidor();
                            regEstoque.St_registro          = "A";
                            regEstoque.Tp_lancto            = "I";
                            if (p.Qtd_saldoatual < p.Qtd_contada)
                            {
                                regEstoque.Tp_movimento = "E";
                                regEstoque.Qtd_entrada  = p.Qtd_contada - p.Qtd_saldoatual;
                                regEstoque.Vl_subtotal  = p.Vl_unitario * (p.Qtd_contada - p.Qtd_saldoatual);
                            }
                            else
                            {
                                regEstoque.Tp_movimento = "S";
                                regEstoque.Qtd_saida    = p.Qtd_saldoatual - p.Qtd_contada;
                                regEstoque.Vl_subtotal  = p.Vl_unitario * (p.Qtd_saldoatual - p.Qtd_contada);
                            }
                            regEstoque.Vl_unitario = p.Vl_unitario;

                            string retorno = TCN_LanEstoque.GravarEstoque(regEstoque, qtb_saldo.Banco_Dados);
                            //Gravar Inventario X Estoque
                            TCN_Inventario_X_Estoque.GravarInventarioXEstoque(
                                new TRegistro_Inventario_X_Estoque()
                            {
                                Cd_empresa       = p.Cd_empresa,
                                Cd_produto       = p.Cd_produto,
                                Id_inventario    = p.Id_inventario,
                                Id_registro      = p.Id_registro,
                                Id_lanctoestoque = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@@P_ID_LANCTOESTOQUE"))
                            }, qtb_saldo.Banco_Dados);
                        }
                    }

                    if (p.Id_Almox == null && p.Qtd_saldoatual != p.Qtd_saldo)
                    {
                        p.Qtd_saldo = p.Qtd_saldoatual;
                        TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados);
                    }
                    else
                    {
                        TCN_Inventario_Item_X_Saldo.GravarInventarioItemSaldo(p, qtb_saldo.Banco_Dados);
                    }
                });
                //Alterar Status do Inventario para Processado
                val.St_inventario = "P";
                GravarInventario(val, qtb_saldo.Banco_Dados);
                if (st_transacao)
                {
                    qtb_saldo.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_saldo.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar inventario: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_saldo.deletarBanco_Dados();
                }
            }
        }