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(); } } }
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(); } } }
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(); } } }
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(); } } }
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(); } } }