private static string GravarSaldoCarenciaTaxa(TRegistro_MovDeposito vMovDep, TRegistro_CadContrato vContrato, List <TRegistro_EstDeposito> lEstDeposito, TObjetoBanco banco) { string retorno = string.Empty; lEstDeposito.ForEach(p => { //Buscar lista de taxas configuradas para o contrato TCD_CadContratoTaxaDeposito qtb_taxa = new TCD_CadContratoTaxaDeposito(); qtb_taxa.Banco_Dados = banco; TList_CadContratoTaxaDeposito lTaxasContrato = new TCD_CadContratoTaxaDeposito(qtb_taxa.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "a.Nr_Contrato", vOperador = "=", vVL_Busca = vContrato.Nr_contrato.ToString() } }, 0, string.Empty); TList_SaldoCarenciaTaxa lSaldoCarencia = new TList_SaldoCarenciaTaxa(); lTaxasContrato.ForEach(v => { //Se for Entrada de Produtos em deposito if (p.Tp_Movimento.Trim().ToUpper().Equals("E")) { CalcularTaxasEntrada(p, v, vContrato, vMovDep, lSaldoCarencia, qtb_taxa.Banco_Dados); } else //EXPEDICAO { CalcularTaxasExpedicao(p, v, vContrato, vMovDep, lSaldoCarencia, qtb_taxa.Banco_Dados); } }); lSaldoCarencia.ForEach(i => new TCD_SaldoCarenciaTaxa(banco).Grava(i)); }); return(retorno); }
public static string DeletarMovDeposito(TRegistro_MovDeposito val, TObjetoBanco banco) { bool st_transacao = false; TCD_MovDeposito Qtb_MovDeposito = new TCD_MovDeposito(); try { if (banco == null) { st_transacao = Qtb_MovDeposito.CriarBanco_Dados(true); } else { Qtb_MovDeposito.Banco_Dados = banco; } //Deletar Movimento Deposito Qtb_MovDeposito.Deleta(val); if (st_transacao) { Qtb_MovDeposito.Banco_Dados.Commit_Tran(); } return("OK"); } catch (Exception ex) { if (st_transacao) { Qtb_MovDeposito.Banco_Dados.RollBack_Tran(); } throw new Exception(ex.Message.Trim()); } finally { if (st_transacao) { Qtb_MovDeposito.deletarBanco_Dados(); } } }
public static string GravarMovDeposito(TRegistro_MovDeposito vMovDep, TObjetoBanco banco) { bool st_transacao = false; TCD_MovDeposito qtb_MovDeposito = new TCD_MovDeposito(); try { if (banco == null) { st_transacao = qtb_MovDeposito.CriarBanco_Dados(true); } else { qtb_MovDeposito.Banco_Dados = banco; } string r_movDeposito = qtb_MovDeposito.Grava(vMovDep); vMovDep.Id_Movto = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(r_movDeposito, "@P_ID_MOVTO")); TCD_CadContrato qtb_contrato = new TCD_CadContrato(); qtb_contrato.Banco_Dados = banco; TList_CadContrato l = new TCD_CadContrato(qtb_MovDeposito.Banco_Dados).Select(new Utils.TpBusca[] { new Utils.TpBusca { vNM_Campo = "a.NR_Pedido", vOperador = "=", vVL_Busca = vMovDep.Nr_Pedido.ToString() }, new Utils.TpBusca { vNM_Campo = "a.CD_Produto", vOperador = "=", vVL_Busca = "'" + vMovDep.CD_Produto.Trim() + "'" }, new Utils.TpBusca() { vNM_Campo = "a.id_pedidoitem", vOperador = "=", vVL_Busca = vMovDep.Id_pedidoitem.ToString() } }, 1, string.Empty); if (l.Count > 0) { //Gravar SaldoCarenciaTaxa List <TRegistro_EstDeposito> vEstoqueDeposito = qtb_MovDeposito.Buscar_EstDeposito(vMovDep.CD_Empresa, vMovDep.CD_Produto, vMovDep.Id_LanctoEstoque); //Gravar Taxa de Armazenagem do Contrato GravarSaldoCarenciaTaxa(vMovDep, l[0], vEstoqueDeposito, banco); } if (st_transacao) { qtb_MovDeposito.Banco_Dados.Commit_Tran(); } return(r_movDeposito); } catch (Exception ex) { if (st_transacao) { qtb_MovDeposito.Banco_Dados.RollBack_Tran(); } throw new Exception(ex.Message); } finally { if (st_transacao) { qtb_MovDeposito.deletarBanco_Dados(); } } }
private static void CalcularTaxasExpedicao(TRegistro_EstDeposito rEstDeposito, TRegistro_CadContratoTaxaDeposito rTaxa, TRegistro_CadContrato vContrato, TRegistro_MovDeposito vMovDep, TList_SaldoCarenciaTaxa lSaldoCarencia, TObjetoBanco banco) { decimal?vID_LanTaxa = null; List <TRegistro_ViewSaldoCarencia> SaldoCarencia = new TCD_SaldoCarenciaTaxa(banco).BuscarSaldoCarencia(vMovDep.CD_Empresa, rTaxa.Id_taxastr, rTaxa.Nr_contratostr, vMovDep.CD_Produto); decimal tmpSaldoExp = rEstDeposito.QTD_Saida; decimal tmpSaldoLan = decimal.Zero; decimal tmpTotDiasExpirado = decimal.Zero; foreach (TRegistro_ViewSaldoCarencia rSaldoCarencia in SaldoCarencia) { if (tmpSaldoExp > 0) { if (rSaldoCarencia.Tot_Saldo >= tmpSaldoExp) { tmpSaldoLan = tmpSaldoExp; } else { tmpSaldoLan = rSaldoCarencia.Tot_Saldo; } tmpTotDiasExpirado = rEstDeposito.DT_Lancto.Subtract(rSaldoCarencia.DT_Saldo.Date).Subtract(TimeSpan.FromDays(Convert.ToDouble(rTaxa.Periodocarencia.ToString()))).Days; decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, tmpSaldoLan, 3, banco); if ((tmpTotDiasExpirado > 0) && (rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { decimal m = ((tmpTotDiasExpirado % rTaxa.Frequencia) > 0 ? 1 : 0); decimal t = (Math.Floor(tmpTotDiasExpirado / rTaxa.Frequencia) + m); decimal k = (rTaxa.Frequencia > 0 ? t : 1); vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = 0, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(tmpSaldoLan * rTaxa.Valortaxa * k / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa * k : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } //Controlar saldo tmpSaldoExp -= tmpSaldoLan; rSaldoCarencia.Tot_Saldo -= tmpSaldoLan; lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa() { Id_Taxa = rTaxa.Id_taxa.Value, Id_Movto = vMovDep.Id_Movto, Id_LanTaxa = vID_LanTaxa, QTD_Lancto = tmpSaldoLan, DT_Saldo = rSaldoCarencia.DT_Saldo, ST_Carencia = "N" }); vID_LanTaxa = null; } else { break; } } }
private static void CalcularTaxasEntrada(TRegistro_EstDeposito rEstDeposito, TRegistro_CadContratoTaxaDeposito rTaxa, TRegistro_CadContrato vContrato, TRegistro_MovDeposito vMovDep, TList_SaldoCarenciaTaxa lSaldoCarencia, TObjetoBanco banco) { //Converter quantidade que esta entradando para unidade da taxa decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, rEstDeposito.QTD_Entrada, 3, banco); decimal?vID_LanTaxa = null; //se for uma taxa que somente sera cobrada com classificacao limitada por faixa if (!string.IsNullOrEmpty(rTaxa.Cd_tipoamostra)) { //se for um lancto por balanca/aplicacao testar os limites de classificacao para taxar ou nao if ((rEstDeposito.ID_Ticket > 0) && (!string.IsNullOrEmpty(rEstDeposito.CD_Empresa))) { rEstDeposito.Classif.ForEach(x => { if (rTaxa.Cd_tipoamostra.Trim().Equals(x.Cd_tipoamostra)) { if ((x.Pc_resultado_local >= rTaxa.Pc_result_maiorque) && (x.Pc_resultado_local <= rTaxa.Pc_result_menorque)) { if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = decimal.Zero, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } } } }); } } else { if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper())) { vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel( TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito() { Cd_empresa = rEstDeposito.CD_Empresa, Id_ticket = rEstDeposito.ID_Ticket, Tp_pesagem = rEstDeposito.Tp_Pesagem, Id_LanTaxa = 0, Nr_Contrato = rTaxa.Nr_contrato.Value, Cd_produto = vContrato.Cd_produto, Id_Reg = rTaxa.Id_reg, Id_Taxa = rTaxa.Id_taxa.Value, DT_Lancto = rEstDeposito.DT_Lancto, Ps_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0), Vl_Taxa = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0), Tp_Lancto = "A", D_c = "D" }, banco), "@P_ID_LANTAXA")); } } if (!lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto))) { lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa() { Id_Taxa = rTaxa.Id_taxa.Value, Id_Movto = vMovDep.Id_Movto, Id_LanTaxa = vID_LanTaxa, QTD_Lancto = rEstDeposito.QTD_Entrada, DT_Saldo = rEstDeposito.DT_Lancto, ST_Carencia = "N" }); } else if (vID_LanTaxa != null) { if (lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null))) { lSaldoCarencia.Find(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null)).Id_LanTaxa = vID_LanTaxa; } } }