public Invoice Add(Invoice entity)
        {
            using (var db = new KoontabiDBEntities())
            {
                try
                {
                    db.Database.BeginTransaction();
                    db.Invoices.Add(entity);

                    if (entity.TypeOfPayID == 2)
                    {
                        decimal subtotal = 0;
                        decimal discount = 0;
                        decimal itbis    = 0;
                        foreach (var item in entity.InvoiceDetails)
                        {
                            subtotal += item.Quantity * item.UnitPrice;
                        }
                        if (entity.DisCount.HasValue)
                        {
                            discount = ((decimal)entity.DisCount.Value * 100) * subtotal / 100;
                        }
                        if (entity.TaxID.HasValue)
                        {
                            Tax t = db.Taxes.Find(entity.TaxID.Value);
                            itbis = (t.TaxValue * subtotal) / 100;
                        }
                        subtotal -= discount;
                        subtotal += itbis;

                        PaidAccount p = new PaidAccount();
                        p.InvoiceID      = entity.InvoiceID;
                        p.DateEmit       = entity.InvoiceDate;
                        p.ExpirationDate = entity.ExpirationInvoiceDate;
                        p.Amount         = subtotal;
                        p.AmountPending  = subtotal;
                        p.DayDelay       = Convert.ToInt32((entity.InvoiceDate - entity.ExpirationInvoiceDate).TotalDays);
                        p.State          = db.SP_GET_STATUS(1).FirstOrDefault().STATUS;

                        db.PaidAccounts.Add(p);
                    }


                    db.SaveChanges();

                    db.Database.CurrentTransaction.Commit();
                    return(new Invoice()
                    {
                        InvoiceID = entity.InvoiceID
                    });
                }
                catch (Exception)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw;
                }
            }
        }
Exemple #2
0
 public static PaidAccountDTO FactoryMethod(PaidAccount paidAccount)
 {
     return(new PaidAccountDTO()
     {
         Nome = paidAccount.PayableAccount.Name,
         ValorOriginal = paidAccount.PayableAccount.Value,
         ValorCorrigido = paidAccount.AmountPaid,
         QuantidadeDeDiasDeAtraso = paidAccount.DelayedDays,
         DataDePagamento = paidAccount.PayDay
     });
 }
Exemple #3
0
 public void Update(PaidAccount entity)
 {
     throw new NotImplementedException();
 }
Exemple #4
0
 public PaidAccount Add(PaidAccount entity)
 {
     throw new NotImplementedException();
 }