public async Task <IActionResult> Edit(string id, [Bind("AutoId,Id,VendorId,PurchaseId,SalesId,EntryId,EntryDate,EntryType,Amount,Status,CreatedDatetime,TransactionType,TransactionRef,PaymentId")] TblTransaction tblTransaction) { if (id != tblTransaction.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(tblTransaction); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TblTransactionExists(tblTransaction.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["PaymentId"] = new SelectList(_context.TblPayment, "Id", "Id", tblTransaction.PaymentId); ViewData["PurchaseId"] = new SelectList(_context.TblPurchase, "Id", "Id", tblTransaction.PurchaseId); ViewData["SalesId"] = new SelectList(_context.TblSale, "SaleId", "SaleId", tblTransaction.SalesId); ViewData["VendorId"] = new SelectList(_context.TblVendor, "Id", "Id", tblTransaction.VendorId); return(View(tblTransaction)); }
public async Task <IActionResult> Create([Bind("AutoId,Id,VendorId,PurchaseId,SalesId,EntryId,EntryDate,EntryType,Amount,Status,CreatedDatetime,TransactionType,TransactionRef,PaymentId")] TblTransaction tblTransaction) { if (ModelState.IsValid) { _context.Add(tblTransaction); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["PaymentId"] = new SelectList(_context.TblPayment, "Id", "Id", tblTransaction.PaymentId); ViewData["PurchaseId"] = new SelectList(_context.TblPurchase, "Id", "Id", tblTransaction.PurchaseId); ViewData["SalesId"] = new SelectList(_context.TblSale, "SaleId", "SaleId", tblTransaction.SalesId); ViewData["VendorId"] = new SelectList(_context.TblVendor, "Id", "Id", tblTransaction.VendorId); return(View(tblTransaction)); }
public async Task <WrapperPaymentListVM> PayToSupplier(PaymentVM paymentVM) { Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <PaymentVM, Invoice>(paymentVM); _repositoryWrapper.Invoice.Create(invoiceToAdd); paymentVM.InvoiceId = invoiceToAdd.Id; Expense expenseToAdd = new Expense(); expenseToAdd = _utilService.Mapper.Map <PaymentVM, Expense>(paymentVM); //expenseToAdd.SupplierId = paymentVM.ClientId; _repositoryWrapper.Expense.Create(expenseToAdd); TblTransaction transactionToAdd = new TblTransaction(); transactionToAdd = _utilService.Mapper.Map <PaymentVM, TblTransaction>(paymentVM); transactionToAdd.PaymentStatus = PAYMENT_STATUS.CASH_PAID.ToString(); transactionToAdd.TransactionType = TRANSACTION_TYPE.DEBIT.ToString(); transactionToAdd.Description = "Paid to " + paymentVM.ClientName; _repositoryWrapper.Transaction.Create(transactionToAdd); Task <int> t1 = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> t2 = _repositoryWrapper.Expense.SaveChangesAsync(); Task <int> t3 = _repositoryWrapper.Transaction.SaveChangesAsync(); await Task.WhenAll(t1, t2, t3); var item = new GetPaymentDataListVM(); item.ClientId = paymentVM.ClientId; item.FactoryId = paymentVM.FactoryId; item.PageNumber = 1; item.PageSize = 10; return(await GetSupplierPaymentList(item)); }
public async Task <WrapperPaymentListVM> RecieveFromCustomer(PaymentVM paymentVM) { Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <PaymentVM, Invoice>(paymentVM); _repositoryWrapper.Invoice.Create(invoiceToAdd); paymentVM.InvoiceId = invoiceToAdd.Id; Income incomeToAdd = new Income(); incomeToAdd = _utilService.Mapper.Map <PaymentVM, Income>(paymentVM); _repositoryWrapper.Income.Create(incomeToAdd); TblTransaction transactionToAdd = new TblTransaction(); transactionToAdd = _utilService.Mapper.Map <PaymentVM, TblTransaction>(paymentVM); transactionToAdd.PaymentStatus = PAYMENT_STATUS.CASH_RECIEVED.ToString(); transactionToAdd.Description = " Recieved from " + paymentVM.ClientName; transactionToAdd.TransactionType = TRANSACTION_TYPE.CREDIT.ToString(); _repositoryWrapper.Transaction.Create(transactionToAdd); Task <int> t1 = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> t2 = _repositoryWrapper.Income.SaveChangesAsync(); Task <int> t3 = _repositoryWrapper.Transaction.SaveChangesAsync(); await Task.WhenAll(t1, t2, t3); var item = new GetPaymentDataListVM(); item.ClientId = paymentVM.ClientId; item.FactoryId = paymentVM.FactoryId; item.PageNumber = 1; item.PageSize = 10; return(await GetCustomerPaymentList(item)); }
// Invoice // Income // Recievable // Sales // Stock // StockOut // Transaction public async Task <WrapperSalesListVM> AddSalesAsync(SalesVM salesVM) { // Invoice Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <SalesVM, Invoice>(salesVM); _repositoryWrapper.Invoice.Create(invoiceToAdd); // Setting Up Invoice Id salesVM.InvoiceId = invoiceToAdd.Id; foreach (var item in salesVM.ItemList) { item.InvoiceId = invoiceToAdd.Id; } // Income Income incomeToAdd = new Income(); incomeToAdd = this._utilService.Mapper.Map <SalesVM, Income>(salesVM); _repositoryWrapper.Income.Create(incomeToAdd); // Recievable Recievable recievableToAdd = new Recievable(); recievableToAdd = _utilService.Mapper.Map <SalesVM, Recievable>(salesVM); _repositoryWrapper.Recievable.Create(recievableToAdd); // Sales List <Sales> listOfSalesToAdd = new List <Sales>(); listOfSalesToAdd = _utilService.Mapper.Map <List <SalesItemVM>, List <Sales> >(salesVM.ItemList); _repositoryWrapper.Sales.CreateAll(listOfSalesToAdd); // Stock Stock stockToAdd = new Stock(); IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == salesVM.FactoryId); for (int i = 0; i < salesVM.ItemList.Count; i++) { Stock existingStock = stockList.ToList().Where(x => x.ItemId == salesVM.ItemList[i].Item.Id && x.ItemStatusId == salesVM.ItemList[i].ItemStatus.Id).FirstOrDefault(); if (existingStock == null) { var getDatalistVM2 = new GetDataListVM() { FactoryId = salesVM.FactoryId, PageNumber = 1, PageSize = 10 }; WrapperSalesListVM dataToReturn = await GetAllSalesAsync(getDatalistVM2); dataToReturn.HasMessage = true; dataToReturn.Message = "Stock Is Empty"; return(dataToReturn); // _utilService.Log("Stock Is Empty. Not Enough Stock available"); // throw new StockEmptyException(); } else { if (existingStock.Quantity >= salesVM.ItemList[i].Quantity) { existingStock.Quantity -= salesVM.ItemList[i].Quantity; _repositoryWrapper.Stock.Update(existingStock); } else { _utilService.Log("Stock Is Empty"); return(new WrapperSalesListVM()); } } } // StockOut List <StockOut> stockOutsToAdd = new List <StockOut>(); stockOutsToAdd = _utilService.Mapper.Map <List <SalesItemVM>, List <StockOut> >(salesVM.ItemList); _repositoryWrapper.StockOut.CreateAll(stockOutsToAdd); // Transaction TblTransaction transactionRecieved = new TblTransaction(); transactionRecieved = _utilService.Mapper.Map <SalesVM, TblTransaction>(salesVM); transactionRecieved.Amount = salesVM.PaidAmount; transactionRecieved.PaymentStatus = PAYMENT_STATUS.CASH_RECIEVED.ToString(); transactionRecieved.TransactionType = TRANSACTION_TYPE.CREDIT.ToString(); _repositoryWrapper.Transaction.Create(transactionRecieved); //TblTransaction transactionRecievable = new TblTransaction(); //transactionRecievable = _utilService.Mapper.Map<SalesVM, TblTransaction>(salesVM); //transactionRecievable.Amount = salesVM.DueAmount; //transactionRecievable.PaymentStatus = PAYMENT_STATUS.CASH_RECIEVABLE.ToString(); //transactionRecievable.TransactionType = TRANSACTION_TYPE.NOT_YET_EXECUTED.ToString(); //transactionRecievable.TransactionId = transactionRecieved.TransactionId; //_repositoryWrapper.Transaction.Create(transactionRecievable); Task <int> Invoice = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> Income = _repositoryWrapper.Income.SaveChangesAsync(); Task <int> Recievable = _repositoryWrapper.Recievable.SaveChangesAsync(); Task <int> Sales = _repositoryWrapper.Sales.SaveChangesAsync(); Task <int> Stock = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> StockOut = _repositoryWrapper.StockOut.SaveChangesAsync(); Task <int> Transaction = _repositoryWrapper.Transaction.SaveChangesAsync(); await Task.WhenAll(Invoice, Income, Recievable, Sales, Stock, StockOut, Transaction); var getDatalistVM = new GetDataListVM() { FactoryId = salesVM.FactoryId, PageNumber = 1, PageSize = 10 }; return(await GetAllSalesAsync(getDatalistVM)); }
public async Task <WrapperSalesReturnVM> AddSalesReturn(SalesReturnVM vm) { // StockIn // Invoice // Payable // Stock Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <SalesReturnVM, Invoice>(vm); _repositoryWrapper.Invoice.Create(invoiceToAdd); vm.InvoiceId = invoiceToAdd.Id; Stock stockToAdd = new Stock(); stockToAdd = _utilService.Mapper.Map <SalesReturnVM, Stock>(vm); // Stock IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == vm.FactoryId); Stock existingStock = stockList.ToList().Where(x => x.ItemId == vm.ItemId).FirstOrDefault(); // IF NOT PRESENT ADD if (existingStock == null) { _utilService.Log("Stock Is Empty. Not Enough Stock available"); throw new StockEmptyException(); //stockToAdd = _utilService.Mapper.Map<SalesItemVM, Stock>(salesVM.ItemList[i]); //_repositoryWrapper.Stock.Create(stockToAdd); } // IF PRESENT UPDATE else { existingStock.Quantity += vm.Quantity; _repositoryWrapper.Stock.Update(existingStock); } StockIn stockInToAdd = new StockIn(); stockInToAdd = _utilService.Mapper.Map <SalesReturnVM, StockIn>(vm); if (!vm.IsFullyPaid) { Payable payableToAdd = new Payable(); payableToAdd = _utilService.Mapper.Map <SalesReturnVM, Payable>(vm); _repositoryWrapper.Payable.Create(payableToAdd); } _repositoryWrapper.StockIn.Create(stockInToAdd); if (vm.AmountPaid > 0) { TblTransaction tblTransactionToAdd = new TblTransaction(); tblTransactionToAdd = _utilService.Mapper.Map <SalesReturnVM, TblTransaction>(vm); _repositoryWrapper.Transaction.Create(tblTransactionToAdd); Expense expenseToAdd = new Expense(); expenseToAdd = _utilService.Mapper.Map <SalesReturnVM, Expense>(vm); _repositoryWrapper.Expense.Create(expenseToAdd); } Task <int> invT = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> stockInT = _repositoryWrapper.StockIn.SaveChangesAsync(); Task <int> stockT = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> payableT = _repositoryWrapper.Payable.SaveChangesAsync(); Task <int> transactionT = _repositoryWrapper.Transaction.SaveChangesAsync(); Task <int> expenseT = _repositoryWrapper.Expense.SaveChangesAsync(); await Task.WhenAll(invT, stockInT, stockT, payableT, transactionT, expenseT); var data = new GetDataListVM() { FactoryId = vm.FactoryId, PageSize = 15, PageNumber = 1 }; return(await GetAllSalesReturn(data)); }
public ActionResult AddSales(string request) { //using (var transaction = _context.Database.BeginTransaction()) //{ TblSale tbl_Sale = JsonConvert.DeserializeObject <TblSale>(request); if (SalesItemStock.Count > 0) { var saved = false; try { var t = JsonConvert.SerializeObject(tbl_Sale); _context.TblSale.Add(tbl_Sale); _context.SaveChanges(); SalesItemStock.ForEach(q => q.Item = null); _context.TblItemStock.AddRange(SalesItemStock); _context.SaveChanges(); TblSequence NewSequenceValue = GenericHelper.GetNextUpdatedData("tbl_Sale"); _context.Entry(NewSequenceValue).State = EntityState.Modified; //_context.SaveChanges(); TblSequence NewSequenceValuetbl_SalesInvoice = GenericHelper.GetNextUpdatedData("tbl_SalesInvoice"); _context.Entry(NewSequenceValuetbl_SalesInvoice).State = EntityState.Modified; //_context.SaveChanges(); TblSequence NewSequenceValueItemStock = GenericHelper.GetNextUpdatedData("tbl_ItemStock"); _context.Entry(NewSequenceValueItemStock).State = EntityState.Modified; //_context.SaveChanges(); //_context.SaveChanges(); // 1 hold -- only save Sales & Item with status hold // 2 CREDIT PURCHASE -- one transaction entry with Debit (In) with unpaid status // 3 CASH PAY -- one transaction entry with Debit (In)/ Paid // one payment Entry with full amount // one transaction entry with credit (out) with payment ID // 4 MULTI MODE PAY -- one transaction entry with Debit (In) // one payment Entry // one transaction entry with credit (out) if (tbl_Sale.PaymentMode != null && tbl_Sale.PaymentMode.Value != PaymentMode.HOLD ) // not hold { var amount = tbl_Sale.Amount; var creditTID = GenericHelper.GetMaxValue(SequenceTable.tbl_TransactionCredit); var tbl_Transaction_Credit = new TblTransaction { Id = creditTID, CreatedDatetime = tbl_Sale.CreatedDatetime, EntryDate = tbl_Sale.InvoiceDate.ToString(), EntryType = TransactionEntryType.Sales .ToString(), //"Purchase", // Purchase/Sales/Recipt/Payment Status = TransactionStatus .Unpaid, //Paid/Unpaid/Pending/Paid Against entries : // Recive Against entries TransactionType = TransactionType.Debit .ToString(), //Debit/ credit -- For Real: Debit what comes in, credit what goes out. //TransactionRef = null, EntryId = tbl_Sale.SaleId, //PurchaseId = tbl_Sale.Id, SalesId = tbl_Sale.SaleId, Amount = tbl_Sale.GrandTotal, VendorId = tbl_Sale.CustomerId }; _context.TblTransaction.Add(tbl_Transaction_Credit); //_context.SaveChanges(); var NewSequenceValueTbl_Transaction = GenericHelper.GetNextUpdatedData("tbl_TransactionCredit"); _context.Entry(NewSequenceValueTbl_Transaction).State = EntityState.Modified; //_context.SaveChanges(); if (tbl_Sale.PaymentMode == 2) //CREDIT PURCHASE { } else if (tbl_Sale.PaymentMode == 3) //CASH PAY { var tbl_PaymentID = GenericHelper.GetMaxValue("tbl_Payment"); var tbl_Payment = new TblPayment { Id = tbl_PaymentID, Amount = tbl_Sale.GrandTotal, CreatedDatetime = tbl_Sale.CreatedDatetime, PartyName = tbl_Sale.SaleId, PaymentDate = tbl_Sale.InvoiceDate.ToString(), PaymentMode = "CASH" //Remark = "", //TransactionID = creditTID, }; _context.TblPayment.Add(tbl_Payment); var NewSequenceValueTbl_Payment = GenericHelper.GetNextUpdatedData("tbl_Payment"); _context.Entry(NewSequenceValueTbl_Payment).State = EntityState.Modified; //_context.SaveChanges(); var tbl_TransactionDebit = new TblTransaction { Id = GenericHelper.GetMaxValue("tbl_TransactionDebit"), CreatedDatetime = tbl_Sale.CreatedDatetime, EntryDate = tbl_Sale.InvoiceDate.ToString(), EntryType = TransactionEntryType.Sales .ToString(), // "Purchase", // Purchase/Sales/Recipt/Payment Status = TransactionStatus.PaidAgainstEntries + tbl_Sale .SaleId, //Paid/Unpaid/Pending/Paid Against entries : // Recive Against entries TransactionType = TransactionType.Credit .ToString(), //Debit/ credit -- For Real: Debit what comes in, credit what goes out. TransactionRef = tbl_Sale.SaleId, EntryId = tbl_PaymentID, //PurchaseID = null, //SalesID = null, PaymentId = tbl_PaymentID, Amount = tbl_Sale.GrandTotal, VendorId = tbl_Sale.CustomerId }; _context.TblTransaction.Add(tbl_TransactionDebit); var NewSequenceValuetbl_Transaction2 = GenericHelper.GetNextUpdatedData("tbl_TransactionDebit"); _context.Entry(NewSequenceValuetbl_Transaction2).State = EntityState.Modified; //_context.SaveChanges(); //var tbl_Transaction result = _context.tbl_Transaction.Where(q => q.ID == creditTID).FirstOrDefault(); tbl_Transaction_Credit.Status = TransactionStatus.Paid; //_context.Entry(tbl_Transactionresult).State = EntityState.Modified; //_context.SaveChanges(); } else if (tbl_Sale.PaymentMode == 4) //MULTI MODE PAY { var tbl_PaymentID = GenericHelper.GetMaxValue("tbl_Payment"); var tbl_Payment = new TblPayment { Id = tbl_PaymentID, Amount = amount, CreatedDatetime = tbl_Sale.CreatedDatetime, PartyName = tbl_Sale.CustomerId, PaymentDate = tbl_Sale.InvoiceDate.ToString(), PaymentMode = "CASH" //Remark = "", //TransactionID = creditTID, }; _context.TblPayment.Add(tbl_Payment); var NewSequenceValueTbl_Payment = GenericHelper.GetNextUpdatedData("tbl_Payment"); _context.Entry(NewSequenceValueTbl_Payment).State = EntityState.Modified; //_context.SaveChanges(); var tbl_TransactionDebit = new TblTransaction { Id = GenericHelper.GetMaxValue("tbl_TransactionDebit"), CreatedDatetime = tbl_Sale.CreatedDatetime, EntryDate = tbl_Sale.InvoiceDate.ToString(), EntryType = TransactionEntryType.Purchase .ToString(), // "Purchase", // Purchase/Sales/Recipt/Payment Status = TransactionStatus.PaidAgainstEntries + tbl_Sale .SaleId, //Paid/Unpaid/Pending/Paid Against entries : // Recive Against entries TransactionType = TransactionType.Debit .ToString(), //Debit/ credit -- For Real: Debit what comes in, credit what goes out. TransactionRef = tbl_Sale.SaleId, EntryId = tbl_PaymentID, //PurchaseID = null, //SalesID = null, PaymentId = tbl_PaymentID, Amount = amount, VendorId = tbl_Sale.CustomerId }; _context.TblTransaction.Add(tbl_TransactionDebit); var NewSequenceValueTbl_Transaction2 = GenericHelper.GetNextUpdatedData("tbl_TransactionDebit"); _context.Entry(NewSequenceValueTbl_Transaction2).State = EntityState.Modified; } } _context.SaveChanges(); saved = true; } catch (Exception e) { throw new InvalidOperationException(e.Message); } finally { //if (saved) transaction.Commit(); } //if (tbl_Sale.PaymentMode == 4) //MULTI MODE PAY // return JavaScript("window.location = '/Purchases/index'"); //else //return RedirectToAction("Index"); return(Content("window.location = '/Sale/index'")); } else { ViewBag.CustomerID = new SelectList(_context.TblVendor, "ID", "Name", tbl_Sale.CustomerId); throw new InvalidOperationException("Please add item to continue!!"); } //return RedirectToAction("Index"); //} }
// Invoice // Expense // Payable // Purchase // Stock // StockIn // Transaction public async Task <WrapperPurchaseListVM> AddPurchaseAsync(PurchaseVM purchaseVM) { // Invoice Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <PurchaseVM, Invoice>(purchaseVM); _repositoryWrapper.Invoice.Create(invoiceToAdd); // Setting Up Invoice Id purchaseVM.InvoiceId = invoiceToAdd.Id; foreach (var item in purchaseVM.ItemList) { item.InvoiceId = invoiceToAdd.Id; } // Expense Expense expenseToAdd = new Expense(); expenseToAdd = this._utilService.Mapper.Map <PurchaseVM, Expense>(purchaseVM); _repositoryWrapper.Expense.Create(expenseToAdd); // Payable Payable payableToAdd = new Payable(); payableToAdd = _utilService.Mapper.Map <PurchaseVM, Payable>(purchaseVM); _repositoryWrapper.Payable.Create(payableToAdd); // Purchase List <Purchase> listOfPurchaseToAdd = new List <Purchase>(); listOfPurchaseToAdd = _utilService.Mapper.Map <List <PurchaseItemVM>, List <Purchase> >(purchaseVM.ItemList); _repositoryWrapper.Purchase.CreateAll(listOfPurchaseToAdd); // Stock Stock stockToAdd = new Stock(); IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == purchaseVM.FactoryId); for (int i = 0; i < purchaseVM.ItemList.Count; i++) { Stock existingStock = stockList.ToList().Where(x => x.ItemId == purchaseVM.ItemList[i].Item.Id && x.ItemStatusId == purchaseVM.ItemList[i].ItemStatus.Id).FirstOrDefault(); // IF NOT PRESENT ADD if (existingStock == null) { stockToAdd = _utilService.Mapper.Map <PurchaseItemVM, Stock>(purchaseVM.ItemList[i]); _repositoryWrapper.Stock.Create(stockToAdd); } // IF PRESENT UPDATE else { existingStock.Quantity += purchaseVM.ItemList[i].Quantity; _repositoryWrapper.Stock.Update(existingStock); } } // StockIn List <StockIn> stockInsToAdd = new List <StockIn>(); stockInsToAdd = _utilService.Mapper.Map <List <PurchaseItemVM>, List <StockIn> >(purchaseVM.ItemList); _repositoryWrapper.StockIn.CreateAll(stockInsToAdd); // Transaction TblTransaction transactionPaid = new TblTransaction(); transactionPaid = _utilService.Mapper.Map <PurchaseVM, TblTransaction>(purchaseVM); transactionPaid.Amount = purchaseVM.PaidAmount; transactionPaid.PaymentStatus = PAYMENT_STATUS.CASH_PAID.ToString(); transactionPaid.TransactionType = TRANSACTION_TYPE.DEBIT.ToString(); _repositoryWrapper.Transaction.Create(transactionPaid); //TblTransaction transactionPayable = new TblTransaction(); //transactionPayable = _utilService.Mapper.Map<PurchaseVM, TblTransaction>(purchaseVM); //transactionPayable.Amount = purchaseVM.DueAmount; //transactionPayable.PaymentStatus = PAYMENT_STATUS.CASH_PAYABLE.ToString(); //transactionPayable.TransactionType = TRANSACTION_TYPE.NOT_YET_EXECUTED.ToString(); //transactionPayable.TransactionId = transactionPaid.TransactionId; //_repositoryWrapper.Transaction.Create(transactionPayable); Task <int> Invoice = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> Expense = _repositoryWrapper.Expense.SaveChangesAsync(); Task <int> Payable = _repositoryWrapper.Payable.SaveChangesAsync(); Task <int> Purchase = _repositoryWrapper.Purchase.SaveChangesAsync(); Task <int> Stock = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> StockIn = _repositoryWrapper.StockIn.SaveChangesAsync(); Task <int> Transaction = _repositoryWrapper.Transaction.SaveChangesAsync(); await Task.WhenAll(Invoice, Expense, Payable, Purchase, Stock, StockIn, Transaction); var getDatalistVM = new GetDataListVM() { FactoryId = purchaseVM.FactoryId, PageNumber = 1, PageSize = 10 }; return(await GetAllPurchaseAsync(getDatalistVM)); }
public async Task <WrapperPurchaseReturnVM> AddPurchaseReturnAsync(PurchaseReturnVM vm) { // StockOut // Invoice // Recievable // Stock Invoice invoiceToAdd = new Invoice(); invoiceToAdd = _utilService.Mapper.Map <PurchaseReturnVM, Invoice>(vm); _repositoryWrapper.Invoice.Create(invoiceToAdd); vm.InvoiceId = invoiceToAdd.Id; if (!vm.IsFullyPaid) { Recievable RecievableToAdd = new Recievable(); RecievableToAdd = _utilService.Mapper.Map <PurchaseReturnVM, Recievable>(vm); _repositoryWrapper.Recievable.Create(RecievableToAdd); } Stock stockToAdd = new Stock(); stockToAdd = _utilService.Mapper.Map <PurchaseReturnVM, Stock>(vm); // Stock IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == vm.FactoryId); Stock existingStock = stockList .ToList() .Where(x => x.ItemId == vm.ItemId && x.FactoryId == vm.FactoryId && x.ItemStatusId == vm.ItemStatusId) .FirstOrDefault(); // IF NOT PRESENT ADD if (existingStock == null) { _utilService.Log("Stock Is Empty. Not Enough Stock available"); throw new StockEmptyException(); //stockToAdd = _utilService.Mapper.Map<SalesItemVM, Stock>(salesVM.ItemList[i]); //_repositoryWrapper.Stock.Create(stockToAdd); } // IF PRESENT UPDATE else { if (existingStock.Quantity < vm.Quantity) { throw new StockEmptyException(); } else { existingStock.Quantity -= vm.Quantity; _repositoryWrapper.Stock.Update(existingStock); } } StockOut stockOutToAdd = new StockOut(); stockOutToAdd = _utilService.Mapper.Map <PurchaseReturnVM, StockOut>(vm); _repositoryWrapper.StockOut.Create(stockOutToAdd); if (vm.AmountRecieved > 0) { TblTransaction tblTransactionToAdd = new TblTransaction(); tblTransactionToAdd = _utilService.Mapper.Map <PurchaseReturnVM, TblTransaction>(vm); _repositoryWrapper.Transaction.Create(tblTransactionToAdd); Income incomeToAdd = new Income(); incomeToAdd = _utilService.Mapper.Map <PurchaseReturnVM, Income>(vm); _repositoryWrapper.Income.Create(incomeToAdd); } Task <int> invT = _repositoryWrapper.Invoice.SaveChangesAsync(); Task <int> stockInT = _repositoryWrapper.StockOut.SaveChangesAsync(); Task <int> stockT = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> payableT = _repositoryWrapper.Recievable.SaveChangesAsync(); Task <int> transactionT = _repositoryWrapper.Transaction.SaveChangesAsync(); Task <int> incomeT = _repositoryWrapper.Income.SaveChangesAsync(); await Task.WhenAll(invT, stockInT, stockT, payableT, transactionT, incomeT); var data = new GetDataListVM() { FactoryId = vm.FactoryId, PageSize = 15, PageNumber = 1 }; return(await GetAllPurchaseReturnAsync(data)); }