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