Пример #1
0
        /// <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();
            }
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        /// <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;
        }