/// <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); }
/// <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); } }
/// <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); }
/// <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); }
public InvoiceItemsController(FaciTechDbContext faciTechDbContext) : base(faciTechDbContext) { _invoiceItemMapper = new InvoiceItemMapper(); }