Exemplo n.º 1
0
        /// <summary>
        /// Recupera los comentarios asociados a un producto.
        /// </summary>
        /// <param name="resourceId"></param>
        /// <returns></returns>
        public InvoiceItemSupport GetByInoiceItem(int invoiceItemId)
        {
            UserManager              userManager              = new UserManager();
            InvoiceItemSupport       invoiceItemSupport       = new InvoiceItemSupport();
            InvoiceItemMapper        invoiceItemMapper        = new InvoiceItemMapper();
            ItemCommentSupportMapper itemCommentSupportMapper = new ItemCommentSupportMapper();

            InvoiceItem invoiceItem = invoiceItemMapper.Get(invoiceItemId);

            if (invoiceItem == null)
            {
                string errorDescription = "No se ha podido recuperar el artículo comprado con id " + invoiceItemId + ".";
                log.AddLogCritical("GetByInoiceItem", errorDescription, this);
                AddError(new ResultBE(ResultBE.Type.NULL, errorDescription));
                return(null);
            }

            List <ItemCommentSupport> comments = itemCommentSupportMapper.GetByInvoiceItem(invoiceItemId);

            if (comments != null)
            {
                foreach (ItemCommentSupport comment in comments)
                {
                    comment.User = userManager.Get(comment.User.Id);
                }
            }

            invoiceItemSupport.InvoiceItem = invoiceItem;
            invoiceItemSupport.Comments    = comments;

            return(invoiceItemSupport);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Persiste la factura en el sistema.
        /// </summary>
        /// <param name="invoice"></param>
        private void SaveInvoice(Invoice invoice)
        {
            //Persistir el invoice: debería hacerse en una transacción
            AddressManager    addressManager    = new AddressManager();
            InvoiceMapper     invoiceMapper     = new InvoiceMapper();
            InvoiceItemMapper invoiceItemMapper = new InvoiceItemMapper();
            // TODO - si se crea un manager, mover la tarjeta
            CreditCardMapper        creditCardMapper   = new CreditCardMapper();
            InvoiceCreditCardMapper invoiceCCMapper    = new InvoiceCreditCardMapper();
            InvoiceCreditNoteMapper invoiceCNoteMapper = new InvoiceCreditNoteMapper();

            addressManager.Save(invoice.BillingAddress);
            invoiceMapper.Save(invoice);
            invoiceItemMapper.Save(invoice);

            if (invoice.CreditCard != null)
            {
                creditCardMapper.Save(invoice.CreditCard);
                invoiceCCMapper.Save(invoice);
            }

            if (invoice.CreditNotes != null)
            {
                invoiceCNoteMapper.Save(invoice);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Recupera el listado de todos los elementos.
        /// </summary>
        /// <returns></returns>
        public List <Tracking> Get(User user)
        {
            MapManager        mapManager        = new MapManager();
            InvoiceItemMapper invoiceItemMapper = new InvoiceItemMapper();
            TrackingMapper    trackingMapper    = new TrackingMapper();
            List <Tracking>   trakings          = trackingMapper.Get(user);

            if (trakings != null)
            {
                foreach (Tracking tracking in trakings)
                {
                    //Sería más óptimo se si buscaran por invoice
                    tracking.InvoiceItem          = invoiceItemMapper.Get(tracking.InvoiceItem.Id);
                    tracking.InvoiceItem.Resource = mapManager.Get(tracking.InvoiceItem.Resource.Id);
                }
            }
            return(trakings);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Genera el PDF para la descarga de la factura
        /// </summary>
        public string DownloadInvoice(int id)
        {
            AddressManager    addressManager    = new AddressManager();
            UserManager       userManager       = new UserManager();
            CreditNoteManager creditNoteManager = new CreditNoteManager();
            CreditCardManager creditCardmanager = new CreditCardManager();
            InvoiceItemMapper invoiceItemMapper = new InvoiceItemMapper();
            InvoiceMapper     invoiceMapper     = new InvoiceMapper();

            Invoice invoice = invoiceMapper.Get(id);

            invoice.BillingAddress = addressManager.Get(invoice.BillingAddress.Id);
            invoice.User           = userManager.Get(invoice.User.Id);
            invoice.InvoiceItems   = invoiceItemMapper.Get(invoice);

            foreach (InvoiceItem invoiceItem in invoice.InvoiceItems)
            {
                invoiceItem.Resource = new MapManager().Get(invoiceItem.Resource.Id);
            }

            invoice.CreditNotes = creditNoteManager.GetUsedByInvoice(invoice);
            invoice.CreditCard  = creditCardmanager.Get(invoice);

            if (invoice.CreditCard != null)
            {
                invoice.CreditCard.Field1 = SecurityHelper.RDesencrypt(invoice.CreditCard.Field1);
                invoice.CreditCard.Field4 = SecurityHelper.RDesencrypt(invoice.CreditCard.Field4);
            }

            string fullPath = PDFHelper.CreateInvoice(invoice);

            if (String.IsNullOrEmpty(fullPath))
            {
                string errorDescription = "Se ha producido un error al generar el archivo de la factura.";
                log.AddLogCritical("DownloadInvoice", errorDescription, this);
                AddError(new ResultBE(ResultBE.Type.FAIL, errorDescription));
            }

            return(fullPath);
        }
        public long Update(InvoiceDTO invoiceDTO)
        {
            long updatedID = -1;

            //Update Invoice
            var existingInvoice = _bheUOW.InvoiceRepository.Query().SingleOrDefault(x => x.ID == invoiceDTO.ID);

            if (existingInvoice != null)
            {
                existingInvoice.BalanceDue      = Math.Round(invoiceDTO.BalanceDue.GetValueOrDefault(), 2);
                existingInvoice.Comments        = invoiceDTO.Comments;
                existingInvoice.CustomerID      = invoiceDTO.Customer.ID;
                existingInvoice.CustomerID      = invoiceDTO.CustomerID;
                existingInvoice.CustomerPO      = invoiceDTO.CustomerPO;
                existingInvoice.Freight         = Math.Round(invoiceDTO.Freight.GetValueOrDefault(), 2);
                existingInvoice.InvoiceDate     = invoiceDTO.InvoiceDate == DateTime.MinValue ? DateTime.Now : invoiceDTO.InvoiceDate;
                existingInvoice.InvoiceNumber   = invoiceDTO.InvoiceNumber;
                existingInvoice.InvoiceStatus   = invoiceDTO.InvoiceStatus.TypeCode;
                existingInvoice.InvoiceStatusID = invoiceDTO.InvoiceStatus.TypeCodeID;
                existingInvoice.InvoiceType     = invoiceDTO.InvoiceType;
                existingInvoice.LaborSubTotal   = Math.Round(invoiceDTO.LaborSubTotal, 2);

                existingInvoice.PartsSubTotal   = Math.Round(invoiceDTO.PartsSubTotal, 2);
                existingInvoice.Tax             = Math.Round(invoiceDTO.Tax, 2);
                existingInvoice.TravelCharge    = Math.Round(invoiceDTO.TravelCharge.GetValueOrDefault(), 2);
                existingInvoice.TravelExpense   = Math.Round(invoiceDTO.TravelExpense.GetValueOrDefault(), 2);
                existingInvoice.LastUpdatedBy   = "Admin";
                existingInvoice.LastUpdatedDate = DateTime.Now;
                if (existingInvoice.InvoiceType == "SERVICE-INVOICE")
                {
                    existingInvoice.InvoiceService.Make             = invoiceDTO.Make;
                    existingInvoice.InvoiceService.Model            = invoiceDTO.Model;
                    existingInvoice.InvoiceService.SerialNumber     = invoiceDTO.SerialNumber;
                    existingInvoice.InvoiceService.UnitNumber       = invoiceDTO.UnitNumber;
                    existingInvoice.InvoiceService.ServicedAt       = invoiceDTO.ServicedAt;
                    existingInvoice.InvoiceService.ServiceStartDate = invoiceDTO.ServiceStartDate;
                    existingInvoice.InvoiceService.ServiceEndDate   = invoiceDTO.ServiceEndDate;
                }

                if (existingInvoice.InvoiceType == "PART-INVOICE")
                {
                    existingInvoice.OrderNumber    = invoiceDTO.OrderNumber;
                    existingInvoice.PaymentStatus  = invoiceDTO.PaymentStatus.TypeCode;
                    existingInvoice.SaleRep        = invoiceDTO.SalesRep;
                    existingInvoice.ShippingMethod = invoiceDTO.ShippingMethod.TypeCode;
                }
                existingInvoice.IsStorePickUp = invoiceDTO.IsStorePickUp;
                updatedID = existingInvoice.ID;
            }

            //Insert/Update/Delete Parts Items
            if (invoiceDTO.InvoiceItems != null && invoiceDTO.InvoiceItems.Count > 0)
            {
                for (int i = 0; i < invoiceDTO.InvoiceItems.Count; i++)
                {
                    //Delete Invoice Item
                    if (invoiceDTO.InvoiceItems[i].RecordStatus.ToUpper() == "DELETED")
                    {
                        InvoiceItem invoiceItem = new InvoiceItem()
                        {
                            Description = invoiceDTO.InvoiceItems[i].Description,
                            ID          = invoiceDTO.InvoiceItems[i].ID,
                            Price       = invoiceDTO.InvoiceItems[i].Price,
                            Quantity    = invoiceDTO.InvoiceItems[i].Quantity,
                            Total       = invoiceDTO.InvoiceItems[i].Total
                        };
                        var invoiceItemID = _bheUOW.InvoiceItemsRepository.Delete(invoiceItem);
                    }
                    //Insert Item
                    if (invoiceDTO.InvoiceItems[i].ID == 0)
                    {
                        invoiceDTO.InvoiceItems[i].InvoiceID = invoiceDTO.ID;
                        InvoiceItemMapper mapper = new InvoiceItemMapper();
                        _bheUOW.InvoiceItemsRepository.Add(mapper.InvoiceItemEntityMapper(invoiceDTO.InvoiceItems[i]));
                    }
                }
            }

            //Insert/Update/Delete Labor Items
            if (invoiceDTO.InvoiceLabors != null && invoiceDTO.InvoiceLabors.Count > 0)
            {
                for (int i = 0; i < invoiceDTO.InvoiceLabors.Count; i++)
                {
                    //Delete Invoice Item
                    if (invoiceDTO.InvoiceLabors[i].RecordStatus.ToUpper() == "DELETED")
                    {
                        InvoiceLabor invoiceLabor = new InvoiceLabor()
                        {
                            ID        = invoiceDTO.InvoiceLabors[i].ID,
                            InvoiceID = invoiceDTO.InvoiceLabors[i].InvoiceID,
                            Amount    = invoiceDTO.InvoiceLabors[i].Amount,
                            Hours     = invoiceDTO.InvoiceLabors[i].Hours,
                            LaborType = invoiceDTO.InvoiceLabors[i].LaborType.TypeCode,
                            Rate      = invoiceDTO.InvoiceLabors[i].Rate,
                        };
                        var invoiceLaborID = _bheUOW.InvoiceLaborRepository.Delete(invoiceLabor);
                    }
                    //Insert Item
                    if (invoiceDTO.InvoiceLabors[i].ID == 0)
                    {
                        invoiceDTO.InvoiceLabors[i].InvoiceID = invoiceDTO.ID;
                        InvoiceLaborMapper mapper = new InvoiceLaborMapper();
                        _bheUOW.InvoiceLaborRepository.Add(mapper.InvoiceLaborEntityMapper(invoiceDTO.InvoiceLabors[i]));
                    }
                }
            }
            _bheUOW.SaveChanges();

            //Insert/Update/Delete Labor Items
            return(updatedID);
        }
Exemplo n.º 6
0
 public InvoiceItemsController(FaciTechDbContext faciTechDbContext) : base(faciTechDbContext)
 {
     _invoiceItemMapper = new InvoiceItemMapper();
 }