/// <summary> /// Salva os saldos do item /// </summary> /// <param name="item">Item que terá o saldo atualizado</param> /// <param name="dataMovimento">data do movimento para atualização do saldo</param> /// <param name="entrada">quantidade de entradas que o item sofreu</param> /// <param name="saida">quantidade de saídas que o item sofreu</param> public static void Save(IItem item, DateTime dataMovimento, double entrada, double saida) { Connection connection = null; try { connection = DbContext.CreateConnection(); connection.BeginTransaction(); #region Diario IList<ISaldoItemDiario> diarios = new SaldoItemDiario().Find<ISaldoItemDiario>( new Where { { "GUIDItem = @p1 AND DataMovimentacao BETWEEN @p2 AND @p3", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = new DateTime(dataMovimento.Year,dataMovimento.Month,dataMovimento.Day), }, new Parameter{ ParameterName = "@p3", GenericDbType = GenericDbType.DateTime, Value = new DateTime(dataMovimento.Year,dataMovimento.Month,dataMovimento.Day,23,59,59), }, } } }); ISaldoItemDiario diario = diarios.Count > 0 ? diarios[0] : new SaldoItemDiario { Item = item, DataMovimentacao = dataMovimento }; diario.QuantidadeEntrada += entrada; diario.QuantidadeSaida += saida; diario.Save(); #endregion #region Mensal IList<ISaldoItemMensal> mensais = new SaldoItemMensal().Find<ISaldoItemMensal>( new Where { { "GUIDItem = @p1 AND MesMovimentacao = @P2", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", Value = dataMovimento.Month }, } } }); ISaldoItemMensal mensal = mensais.Count > 0 ? mensais[0] : new SaldoItemMensal { Item = item, MesMovimentacao = dataMovimento.Month }; mensal.QuantidadeEntrada += entrada; mensal.QuantidadeSaida += saida; mensal.Save(); #endregion #region Anual IList<ISaldoItemAnual> anuais = new SaldoItemAnual().Find<ISaldoItemAnual>( new Where { { "GUIDItem = @p1 AND AnoMovimentacao = @P2", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", Value = dataMovimento.Year }, } } }); ISaldoItemAnual anual = anuais.Count > 0 ? anuais[0] : new SaldoItemAnual { Item = item, AnoMovimentacao = dataMovimento.Year }; anual.QuantidadeEntrada += entrada; anual.QuantidadeSaida += saida; anual.Save(); #endregion connection.CommitTransaction(); } catch { if(connection != null) { if(connection.Transaction != null && connection.Transaction.State == TransactionState.Begin) connection.RollbackTransaction(); } throw; } finally { if(connection != null) connection.Close(); } }
/// <summary> /// Salva os saldos do item /// </summary> /// <param name="periodoInicial">data do movimento inicial para recuperar o saldo</param> /// <param name="periodoFinal">Data do movimento final para recuperar o saldo</param> public static SaldoItem Create(DateTime periodoInicial, DateTime periodoFinal) { SaldoItem result = new SaldoItem(); #region Diario IList<ISaldoItemDiario> diarios = new SaldoItemDiario().Find<ISaldoItemDiario>( new Where { { "DataMovimentacao BETWEEN @p2 AND @p3", new [] { new Parameter{ ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = new DateTime(periodoInicial.Year,periodoInicial.Month,periodoInicial.Day), }, new Parameter{ ParameterName = "@p3", GenericDbType = GenericDbType.DateTime, Value = new DateTime(periodoFinal.Year,periodoFinal.Month,periodoFinal.Day,23,59,59), }, } } }); result.Diarios = (from x in diarios select new SaldoItemResult { Data = x.DataMovimentacao, Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion #region Mensal IList<ISaldoItemMensal> mensais = new SaldoItemMensal().Find<ISaldoItemMensal>( new Where { { "MesMovimentacao BETWEEN @p2 AND @p3", new [] { new Parameter{ ParameterName = "@p2", Value = periodoInicial.Month }, new Parameter{ ParameterName = "@p3", Value = periodoFinal.Month } } } }); result.Mensais = (from x in mensais select new SaldoItemResult { Data = new DateTime(periodoInicial.Year, x.MesMovimentacao, 1), Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion #region Anual IList<ISaldoItemAnual> anuais = new SaldoItemAnual().Find<ISaldoItemAnual>( new Where { { "AnoMovimentacao BETWEEN @p2 AND @p3", new [] { new Parameter{ ParameterName = "@p2", Value = periodoInicial.Year }, new Parameter{ ParameterName = "@p3", Value = periodoFinal.Year } } } }); result.Anuais = (from x in anuais select new SaldoItemResult { Data = new DateTime(x.AnoMovimentacao, periodoInicial.Month, periodoInicial.Day), Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion return result; }
/// <summary> /// Salva os saldos do item /// </summary> /// <param name="item">Item que terá o saldo atualizado</param> /// <param name="dataMovimento">data do movimento para atualização do saldo</param> public static SaldoItem Create(IItem item, DateTime dataMovimento) { SaldoItem result = new SaldoItem(); #region Diario IList<ISaldoItemDiario> diarios = new SaldoItemDiario().Find<ISaldoItemDiario>( new Where { { "GUIDItem = @p1 AND DataMovimentacao BETWEEN @p2 AND @p3", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", GenericDbType = GenericDbType.DateTime, Value = new DateTime(dataMovimento.Year,dataMovimento.Month,dataMovimento.Day), }, new Parameter{ ParameterName = "@p3", GenericDbType = GenericDbType.DateTime, Value = new DateTime(dataMovimento.Year,dataMovimento.Month,dataMovimento.Day,23,59,59), }, } } }); result.Diarios = (from x in diarios select new SaldoItemResult { Data = x.DataMovimentacao, Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion #region Mensal IList<ISaldoItemMensal> mensais = new SaldoItemMensal().Find<ISaldoItemMensal>( new Where { { "GUIDItem = @p1 AND MesMovimentacao = @p2", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", Value = dataMovimento.Month }, } } }); result.Mensais = (from x in mensais select new SaldoItemResult { Data = new DateTime(dataMovimento.Year, x.MesMovimentacao, 1), Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion #region Anual IList<ISaldoItemAnual> anuais = new SaldoItemAnual().Find<ISaldoItemAnual>( new Where { { "GUIDItem = @p1 AND AnoMovimentacao = @p2", new [] { new Parameter{ ParameterName = "@p1", Value= item.GUID }, new Parameter{ ParameterName = "@p2", Value = dataMovimento.Year }, } } }); result.Anuais = (from x in anuais select new SaldoItemResult { Data = new DateTime(x.AnoMovimentacao, dataMovimento.Month, dataMovimento.Day), Entrada = x.QuantidadeEntrada, Saida = x.QuantidadeSaida, Saldo = x.Saldo, Item = x.Item }).ToList(); #endregion return result; }