static void UpdateInvoiceTaxes(Invoice invoice, IDataRepositoryFactory dataRepositoryFactory) { var invoiceTaxRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceTaxRepository>(); var productTaxRepository = dataRepositoryFactory.GetCustomDataRepositories <IProductTaxRepository>(); var invoiceTaxes = invoiceTaxRepo.GetInvoiceTaxes(invoice.InvoiceNumber).ToList(); if (invoiceTaxes != null && invoiceTaxes.Count > 0) { foreach (var tax in invoiceTaxes) { invoiceTaxRepo.Remove(tax.Id); } } Dictionary <long, decimal> amountPerTax = new Dictionary <long, decimal>(); invoice.InvoiceDetails.ForEach(x => { x.InvoiceId = invoice.Id; var productTaxes = x.Product?.Taxes != null && x.Product?.Taxes.Count > 0 ? x.Product.Taxes : productTaxRepository.GetProductTaxes(x.ProductId); foreach (var impuesto in productTaxes) { if (amountPerTax.Any(i => i.Key == impuesto.TaxId)) { amountPerTax[impuesto.TaxId] += impuesto.Tax.Rate * x.BeforeTaxesAmount; } else { amountPerTax.Add(impuesto.TaxId, impuesto.Tax.Rate * x.BeforeTaxesAmount); } } }); foreach (var invoiceTaxAmount in amountPerTax) { InvoiceTax InvoiceImpuesto = new InvoiceTax() { CreatedBy = invoice.CreatedBy, Active = true, InvoiceId = invoice.Id, CreatedDate = DateTime.Now, TaxId = invoiceTaxAmount.Key, CurrencyId = invoice.CurrencyId, TaxAmount = invoiceTaxAmount.Value, InvoiceNumber = string.IsNullOrEmpty(invoice.InvoiceNumber) ? invoice.DocumentNumber : invoice.InvoiceNumber, }; invoiceTaxRepo.Add(InvoiceImpuesto); } }
public static void UpdateExpenseTaxes(Expense expense, IDataRepositoryFactory dataRepositoryFactory) { var expensesTaxRepo = dataRepositoryFactory.GetCustomDataRepositories <IExpenseTaxRepository>(); expense.Taxes = expense.Taxes == null ? new List <ExpenseTax>() : expense.Taxes; var expenseTaxes = expensesTaxRepo.GetExpenseTaxes(expense.ExpenseReference).ToList(); if (expenseTaxes != null && expenseTaxes.Count > 0) { foreach (ExpenseTax tax in expenseTaxes) { expensesTaxRepo.Remove(tax.Id); } } foreach (var expenseTax in expense.Taxes) { ExpenseTax tax = new ExpenseTax() { CreatedBy = expense.CreatedBy, Active = true, ExpenseId = expense.Id, Date = DateTime.Now, CreatedDate = DateTime.Now, TaxId = expenseTax.TaxId, CurrencyId = expense.CurrencyId, TaxAmount = expenseTax.TaxAmount, Reference = expense.ExpenseReference, }; expensesTaxRepo.Add(tax); } }
public static bool IsProductInWarehouse(int productId, IDataRepositoryFactory dataRepositoryFactory) { var inventoryRepo = dataRepositoryFactory.GetCustomDataRepositories <IInventoryRepository>(); if (inventoryRepo.GetProductInventory(productId).Where(e => e.Quantity > 0).Count() > 0) { return(true); } return(false); }
public static bool IsBaseProduct(int productId, IDataRepositoryFactory dataRepositoryFactory) { var repo = dataRepositoryFactory.GetCustomDataRepositories <ICompositeProductRepository>(); if (repo.GetDerivedProducts(productId).Count() > 0) { return(true); } return(false); }
public static bool ExistProductInInvoices(int productId, IDataRepositoryFactory dataRepositoryFactory) { var detailsRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); if (detailsRepo.GetByProductId(productId).ToList().Count > 0) { return(true); } return(false); }
public CompanyStateController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) { this._customRepo = repositoryFactory.GetCustomDataRepositories <IInvoiceRepository>(); _repositoryFactory = repositoryFactory; _appSettings = appSettings; _cache = cache; this.languageKeysRepo = repositoryFactory.GetDataRepositories <LanguageKey>(); this.languageKeys = _cache.Get <IEnumerable <LanguageKey> >("languageKeysMem"); if (this.languageKeys == null) { this.languageKeys = this.languageKeysRepo.GetAll(x => x, y => y.Active == true).Data; this._cache.Set("languageKeysMem", this.languageKeys, DateTime.Now.AddHours(24)); } }
public static bool UpdateProductTaxes(Product product, IDataRepositoryFactory dataRepositoryFactory) { List <ProductTax> productTaxes = product.Taxes != null?product.Taxes.ToList() : new List <ProductTax>(); var taxesRepo = dataRepositoryFactory.GetCustomDataRepositories <IProductTaxRepository>(); var previousTaxes = taxesRepo.GetProductTaxes(product.Id).ToList(); if (previousTaxes != null) { productTaxes.ForEach(u => { if (u.Id == 0) { u.Active = true; u.CreatedBy = product.CreatedBy; u.CreatedDate = product.CreatedDate; u.ProductId = product.Id; taxesRepo.Add(u); } else { var previuosEquivalenceUnits = productTaxes.Where(e => e.Id == u.Id).FirstOrDefault(); previuosEquivalenceUnits.TaxId = u.TaxId; previuosEquivalenceUnits.ModifiedBy = product.ModifiedBy; previuosEquivalenceUnits.ModifiedDate = product.ModifiedDate; taxesRepo.Update(previuosEquivalenceUnits); } }); var deletedUnits = previousTaxes.Except(productTaxes).ToList(); if (deletedUnits != null) { deletedUnits.ForEach(e => { try { taxesRepo.Remove(e.Id); } catch { throw new Exception("cannotDeleteTax_msg"); } }); } } return(true); }
protected override Result <LeadDetail> ProcessDetail(long branchOfficeId, LeadDetail detail, IDataRepositoryFactory dataRepositoryFactory, InvoiceLead lead) { var detailService = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); var productRepo = dataRepositoryFactory.GetDataRepositories <Product>(); var productBasesRepo = dataRepositoryFactory.GetDataRepositories <CompositeProduct>(); var productUnitRepo = dataRepositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var productBases = detail.Product.BaseCompositeProducts == null || detail.Product.BaseCompositeProducts.Count() == 0 ? productBasesRepo.GetAll(x => x.AsNoTracking().Where(y => y.Active == true && y.ProductId == detail.ProductId)).Data.ToList() : detail.Product.BaseCompositeProducts.ToList(); detail.WarehouseId = null; detail.UnitId = null; var detailResult = detailService.Add(detail); productBases.ForEach(p => { var currentProduct = productRepo.Get(p.BaseProductId).Data.FirstOrDefault(); var currentUnit = p.UnitProductEquivalence == null ? p.BaseProductUnitId.HasValue ? productUnitRepo.Get(p.BaseProductUnitId.Value).Data.FirstOrDefault() : null : p.UnitProductEquivalence; var instance = GetBillProductOrServiceInstance.GetBillingInstance(currentProduct); // decimal nuevaQuantity = p.Quantity * detail.Quantity; LeadDetail detailTemp = new LeadDetail(detail) { Quantity = p.Quantity * detail.Quantity, UnitId = currentUnit != null ? currentUnit.Unit.Id : p.BaseProductUnitId, ProductId = p.BaseProductId, ParentId = detailResult.Id, Product = currentProduct, Free = true }; var result = instance.ProcessProductService(branchOfficeId, detailTemp, dataRepositoryFactory, lead).Data.FirstOrDefault(); if (result.SaveRegister) { detailService.Add(result); } }); detail.SaveRegister = false; return(new Result <LeadDetail>(0, 0, "ok_msg", new List <LeadDetail>() { detail })); }
protected override Result <LeadDetail> ProcessReturnDetail(long branchOfficeId, LeadDetail detail, IDataRepositoryFactory dataRepositoryFactory, InvoiceLead lead) { var invoiceDetailRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); var productRepo = dataRepositoryFactory.GetDataRepositories <Product>(); var productBasesRepo = dataRepositoryFactory.GetDataRepositories <CompositeProduct>(); var productUnitRepo = dataRepositoryFactory.GetDataRepositories <UnitProductEquivalence>(); var baseDetails = invoiceDetailRepo.GetChildren(detail.Id).ToList(); baseDetails.ForEach(p => { var currentProduct = p.Product ?? productRepo.Get(p.ProductId).Data.FirstOrDefault(); var instance = GetBillProductOrServiceInstance.GetBillingInstance(currentProduct); // decimal nuevaQuantity = p.Quantity * detail.Quantity; LeadDetail detailTemp = new LeadDetail() { Id = p.Id, Active = p.Active, WarehouseId = p.WarehouseId ?? null, Quantity = p.Quantity * (detail.ReturnAmount / detail.Quantity), ReturnAmount = p.Quantity * (detail.ReturnAmount / detail.Quantity), ParentId = p.ParentId ?? null, Defective = detail.Defective, InvoiceLeadId = p.InvoiceLeadId, Product = p.Product, ProductId = p.ProductId, Unit = p.Unit, UnitId = p.UnitId }; var resultado = instance.ReturnProductService(branchOfficeId, detailTemp, dataRepositoryFactory, lead); }); return(new Result <LeadDetail>(0, 0, "ok_msg", new List <LeadDetail>() { detail })); }
public static Result <Invoice> UpdateQuoteDetails(Invoice invoice, IDataRepositoryFactory dataRepositoryFactory) { var detailsRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); var oldDetails = detailsRepo.GetByInvoiceId(invoice.Id).ToList(); var newDetails = invoice.InvoiceDetails.Where(x => x.Id == 0).ToList(); var modifiedDetails = invoice.InvoiceDetails.Except(newDetails).ToList().Except(oldDetails).ToList(); var untouchedDetails = invoice.InvoiceDetails.Intersect(oldDetails).ToList(); // BORRA LOS QUE YA NO EXISTEN EN LA invoice NUEVA oldDetails.ForEach(d => { bool existe = (modifiedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null) || untouchedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null)); if (!existe) { detailsRepo.Remove(d.Id); } }); //INSERTAR DETALLES NUEVOS Invoice newinvoice = new Invoice(invoice); newinvoice.InvoiceDetails = newDetails; AddQuoteDetails(newinvoice, dataRepositoryFactory); modifiedDetails.ForEach(d => { detailsRepo.Update(d); }); UpdateInvoiceTaxes(invoice, dataRepositoryFactory); return(new Result <Invoice>(0, 0, "ok_msg", new List <Invoice>() { invoice })); }
public CustomerController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache, repositoryFactory.GetCustomDataRepositories <ICustomerRepository>()) { this.sequence = this._repositoryFactory.GetCustomDataRepositories <ISequenceManagerRepository>(); }
public static bool UpdateProductUnits(Product product, IDataRepositoryFactory dataRepositoryFactory) { var unitsRepo = dataRepositoryFactory.GetCustomDataRepositories <IUnitProductEquivalenceRepository>(); List <UnitProductEquivalence> productUnits = product.ProductUnits ?? new List <UnitProductEquivalence>(); var previousUnits = unitsRepo.GetProductUnits(product.Id).ToList(); if (product.IsService) { productUnits = new List <UnitProductEquivalence>(); var deletedUnits = previousUnits.Except(productUnits).ToList(); if (deletedUnits != null) { deletedUnits.ForEach(e => { unitsRepo.Remove(e.Id); }); } } if (!product.IsService) { if (productUnits.Count == 0) { throw new Exception("productNeedsUnits_msg"); } if (!productUnits.Exists(u => u.IsPrimary)) { throw new Exception("productNeedsPrimaryUnit_msg"); } } if (!product.IsService && previousUnits != null) { productUnits.ForEach(u => { if (u.Id == 0) { u.Active = true; u.CreatedBy = product.CreatedBy; u.CreatedDate = product.CreatedDate; unitsRepo.Add(u); } else { var previuosEquivalenceUnits = previousUnits.Where(e => e.Id == u.Id).FirstOrDefault(); previuosEquivalenceUnits.Equivalence = u.Equivalence; previuosEquivalenceUnits.IsPrimary = u.IsPrimary; previuosEquivalenceUnits.CostPrice = u.CostPrice; previuosEquivalenceUnits.SellingPrice = u.SellingPrice; previuosEquivalenceUnits.ModifiedBy = product.ModifiedBy; previuosEquivalenceUnits.ModifiedDate = product.ModifiedDate; unitsRepo.Update(previuosEquivalenceUnits); } }); var deletedUnits = previousUnits.Except(productUnits).ToList(); if (deletedUnits != null) { deletedUnits.ForEach(e => { try { unitsRepo.Remove(e.Id); } catch (Exception ex) { throw new Exception("cannotEraseUnit_msg"); } }); } } return(true); }
public InvoiceController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache, repositoryFactory.GetCustomDataRepositories <IInvoiceRepository>()) { this._customRepo = repositoryFactory.GetCustomDataRepositories <IInvoiceRepository>(); }
public override Result <CustomerReturn> Add(CustomerReturn entity) { var result = new Result <CustomerReturn>(-1, -1, "error_msg"); var warehouses = _Context.Warehouses.AsNoTracking().Where(x => x.Active == true).ToList(); using (var transaction = _Context.Database.BeginTransaction()) { try { var invoice = repositoryFactory.GetCustomDataRepositories <IInvoiceRepository>().GetByInvoiceNumber(entity.InvoiceNumber); if (string.IsNullOrEmpty(entity.InvoiceNumber)) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "invoiceNumberRequired_error")); } if (repositoryFactory.GetDataRepositories <CustomerReturn>().Get(x => x, y => y.Active == true && y.InvoiceNumber.ToUpper() == entity.InvoiceNumber.ToUpper()) != null) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "returnAlreadyApplied_error")); } if (entity.ReturnDetails == null || entity.ReturnDetails.Count == 0 || !entity.ReturnDetails.Any(x => x.Quantity > 0)) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "detailsRequired_error")); } if (invoice == null) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "invoiceDoesNotExist_error")); } var validStates = new char[] { (char)Enums.BillingStates.Paid, (char)Enums.BillingStates.FullPaid }; if (!validStates.Contains(invoice.State)) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "invalidInvoiceStateReturn_error")); } entity.CurrencyId = invoice.CurrencyId; entity.CustomerId = invoice.CustomerId; entity.InvoiceId = invoice.Id; entity.BranchOfficeId = invoice.BranchOfficeId; entity.Date = DateTime.Now; entity.Active = true; entity.BranchOffice = null; entity.Currency = null; entity.Customer = null; entity.Invoice = null; entity.BeforeTaxesAmount = entity.ReturnDetails.Sum(x => x.BeforeTaxesAmount); entity.TaxesAmount = entity.ReturnDetails.Sum(x => x.TaxesAmount); entity.TotalAmount = entity.BeforeTaxesAmount + entity.TaxesAmount; entity.InvoiceNumber = invoice.InvoiceNumber; CreditNote creditNote = new CreditNote() { Active = true, Amount = entity.ReturnDetails.Sum(x => x.TotalAmount), Applied = false, OriginInvoiceNumber = entity.InvoiceNumber, AppliedInvoiceNumber = "", CurrencyId = invoice.CurrencyId, CustomerId = invoice.CustomerId, Date = DateTime.Now, Sequence = Helpers.SequencesHelper.CreateCustomersReturnsControl(repositoryFactory) }; var creditNoteResult = repositoryFactory.GetCustomDataRepositories <ICreditNoteRepository>().Add(creditNote); if (creditNoteResult.Status < 0) { transaction.Rollback(); return(new Result <CustomerReturn>(-1, -1, "error_msg")); } entity.CreditNoteId = creditNoteResult.Data.FirstOrDefault().Id; entity.CreditNoteNumber = creditNote.Sequence; foreach (var d in entity.ReturnDetails) { d.Active = true; d.CustomerId = entity.CustomerId; d.Date = DateTime.Now; d.InvoiceNumber = entity.InvoiceNumber; d.Reference = creditNote.Sequence; d.WarehouseId = d.Defective ? warehouses.FirstOrDefault(x => x.Code.ToLower() == "def")?.Id : d.WarehouseId; if (d.WarehouseId.HasValue && d.WarehouseId > 0) { var inventoryResult = Helpers.InventoryHelper.ReInsertInventoryToWarehouse(new InvoiceDetail() { Active = true, BeforeTaxesAmount = d.BeforeTaxesAmount, Amount = 0, CreditNoteAmount = d.TotalAmount, TaxesAmount = d.TaxesAmount, TotalAmount = d.TotalAmount, BranchOfficeId = invoice.BranchOfficeId, Date = d.Date, Defective = d.Defective, InvoiceId = entity.InvoiceId, ProductId = d.ProductId, UnitId = d.UnitId, WarehouseId = d.WarehouseId, Quantity = d.Quantity }, repositoryFactory, warehouses.FirstOrDefault(x => x.Id == d.WarehouseId.Value), d.Reference); if (inventoryResult.Status < 0) { transaction.Rollback(); return(new Result <CustomerReturn>(inventoryResult.Id, inventoryResult.Status, inventoryResult.Message)); } } } entity.ReturnDetails.ForEach(d => { d.Product = null; d.Customer = null; d.Warehouse = null; }); result = base.Add(entity); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); result = new Result <CustomerReturn>(-1, -1, "error_msg", null, ex); } } return(result); }
public MenuController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache, repositoryFactory.GetCustomDataRepositories <IMenuRepository>()) { menuRepository = this._repositoryFactory.GetCustomDataRepositories <IMenuRepository>(); }
public SupplierReturnController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache, repositoryFactory.GetCustomDataRepositories <ISupplierReturnRepository>()) { this.repo = repositoryFactory.GetCustomDataRepositories <ISupplierReturnRepository>(); }
public static bool UpdateProductBases(Product product, IDataRepositoryFactory dataRepositoryFactory) { var repo = dataRepositoryFactory.GetCustomDataRepositories <ICompositeProductRepository>(); List <CompositeProduct> productBases = product.BaseCompositeProducts ?? new List <CompositeProduct>(); var previousBases = repo.GetProductBases(product.Id).ToList() ?? new List <CompositeProduct>(); if (!product.IsService) { productBases = new List <CompositeProduct>(); var deletedBases = previousBases.Except(productBases).ToList(); if (deletedBases != null) { deletedBases.ForEach(e => { repo.Remove(e.Id); }); } } if (product.IsService && product.IsCompositeProduct) { productBases.ForEach(u => { if (u.Id == 0) { u.Active = true; u.CreatedBy = product.CreatedBy; u.CreatedDate = product.CreatedDate; repo.Add(u); } else { var previousEquivalenceBases = previousBases.Where(e => e.Id == u.Id).FirstOrDefault(); if (previousEquivalenceBases != null) { previousEquivalenceBases.Quantity = u.Quantity; previousEquivalenceBases.BaseProductId = u.BaseProductId; previousEquivalenceBases.ProductId = u.ProductId; previousEquivalenceBases.BaseProductUnitId = u.BaseProductUnitId ?? null; previousEquivalenceBases.ModifiedBy = product.ModifiedBy; previousEquivalenceBases.ModifiedDate = product.ModifiedDate; repo.Update(previousEquivalenceBases); } } }); var deletedUnits = previousBases.Except(productBases).ToList(); if (deletedUnits != null) { deletedUnits.ForEach(e => { try { repo.Remove(e.Id); } catch (Exception ex) { throw new Exception("cannotRemoveBaseProduct_msg"); } }); } } else if ((product.IsService && !product.IsCompositeProduct) || !product.IsService) { previousBases.ForEach(e => { try { repo.Remove(e.Id); } catch (Exception ex) { throw new Exception("cannotRemoveBaseProduct_msg"); } }); } return(true); }
public LanguageController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache) { this.languageKeyRepository = repositoryFactory.GetCustomDataRepositories <ILanguageKeyRepository>(); }
public WarehouseTransferController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache, IWarehouseTransferRepository repo) : base(appSettings, repositoryFactory, cache, repo) { this.repo = repositoryFactory.GetCustomDataRepositories <IWarehouseTransferRepository>(); }
public InventoryEntryController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache, IInventoryEntryRepository repo) : base(appSettings, repositoryFactory, cache, repo) { this.repo = repositoryFactory.GetCustomDataRepositories <IInventoryEntryRepository>(); }
public static Result <Invoice> UpdateDetails(Invoice invoice, IDataRepositoryFactory dataRepositoryFactory) { var detailsRepo = dataRepositoryFactory.GetCustomDataRepositories <IInvoiceDetailRepository>(); var productUnitsRepo = dataRepositoryFactory.GetCustomDataRepositories <IUnitProductEquivalenceRepository>(); var oldDetails = detailsRepo.GetByInvoiceId(invoice.Id).ToList(); var newDetails = invoice.InvoiceDetails.Where(x => x.Id == 0).ToList(); var modifiedDetails = invoice.InvoiceDetails.Except(newDetails).ToList().Except(oldDetails).ToList(); var untouchedDetails = invoice.InvoiceDetails.Intersect(oldDetails).ToList(); oldDetails.ForEach(d => { bool existe = (modifiedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null) || untouchedDetails.Exists(x => x.ProductId == d.ProductId && d.ParentId == null)); if (!existe) { detailsRepo.Remove(d.Id); var result = InventoryHelper.AddInventory(d, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } }); Invoice newinvoice = new Invoice(invoice); newinvoice.InvoiceDetails = newDetails; AddDetails(newinvoice, dataRepositoryFactory); modifiedDetails.ForEach(d => { if (!d.Product.IsService) { var oldDetail = oldDetails.Where(x => x.Id == d.Id).FirstOrDefault(); decimal currentQuantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( d.Quantity, d.UnitId.Value, d.Product.ProductUnits == null || d.Product.ProductUnits.Count == 0 ? productUnitsRepo.GetProductUnits(d.ProductId).ToList() : d.Product.ProductUnits ).Data.FirstOrDefault(); decimal oldQuantity = (decimal)ProductsHelper.ConvertToProductPrincipalUnit( oldDetail.Quantity, oldDetail.UnitId.Value, oldDetail.Product.ProductUnits == null || oldDetail.Product.ProductUnits.Count == 0 ? productUnitsRepo.GetProductUnits(oldDetail.ProductId).ToList() : oldDetail.Product.ProductUnits ).Data.FirstOrDefault(); decimal difference = currentQuantity - oldQuantity; if (difference > 0) { var warehouse = invoice.BranchOffice.Warehouses?.Where(y => y.Id == d.WarehouseId).FirstOrDefault(); if (warehouse == null) { throw new Exception("warehouseError_msg"); } InvoiceDetail nuevoDetalle = new InvoiceDetail() { Product = d.Product, ProductId = d.ProductId, Quantity = difference, UnitId = d.UnitId ?? null, Unit = d.Unit ?? null }; var result = InventoryHelper.UpdateInventory(nuevoDetalle, warehouse, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } else if (difference < 0) { InvoiceDetail detailToInsert = new InvoiceDetail(d); detailToInsert.Quantity = Math.Abs(difference); detailToInsert.Unit = d.Product.ProductUnits.Where(u => u.IsPrimary).FirstOrDefault().Unit; detailToInsert.UnitId = detailToInsert.Unit.Id; var result = InventoryHelper.AddInventory(detailToInsert, invoice, dataRepositoryFactory); if (result.Status < 0) { throw new Exception(result.Message); } } detailsRepo.Update(d); } else { detailsRepo.Update(d); } }); UpdateInvoiceTaxes(invoice, dataRepositoryFactory); return(new Result <Invoice>(0, 0, "ok_msg", new List <Invoice>() { invoice })); }
public UserController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory) { _appSettings = appSettings; _repositoryFactory = repositoryFactory; this._baseRepo = _repositoryFactory.GetCustomDataRepositories <IUserRepository>(); }
public ProductController(IOptions <AppSettings> appSettings, IDataRepositoryFactory repositoryFactory, IMemoryCache cache) : base(appSettings, repositoryFactory, cache) { _customRepo = repositoryFactory.GetCustomDataRepositories <IProductRepository>(); }
public SupplierReturnRepository(MainDataContext context, IDataRepositoryFactory repositoryFactory) : base(context) { this.sequenceRepo = repositoryFactory.GetCustomDataRepositories <ISequenceManagerRepository>(); this.warehouseMovements = repositoryFactory.GetCustomDataRepositories <IWarehouseMovementRepository>(); }