public List <Entities.POSIntegrationTrnStockTransfer> GetStockTransferItemsOTPOSIntegration(String stockTransferDate, String fromBranchCode, Entities.POSIntegrationTrnSalesInvoice POSIntegrationTrnSalesInvoiceObject) { var stockTransfer = from d in db.TrnStockTransfers.OrderByDescending(d => d.Id) where d.STDate == Convert.ToDateTime(stockTransferDate) && d.MstBranch.BranchCode.Equals(fromBranchCode) && d.IsLocked == true select new Entities.POSIntegrationTrnStockTransfer { BranchCode = d.MstBranch.BranchCode, Branch = d.MstBranch.Branch, STNumber = d.STNumber, STDate = d.STDate.ToShortDateString(), ToBranchCode = d.MstBranch1.BranchCode, ToBranch = d.MstBranch1.Branch, ListPOSIntegrationTrnStockTransferItem = db.TrnStockTransferItems.Select(i => new Entities.POSIntegrationTrnStockTransferItem { STId = i.STId, ItemCode = i.MstArticle.ManualArticleCode, Item = i.MstArticle.Article, Unit = i.MstUnit.Unit, Quantity = i.Quantity, Cost = i.Cost, Amount = i.Amount }).Where(i => i.STId == d.Id).ToList(), }; return(stockTransfer.ToList()); }
public HttpResponseMessage AddSalesInvoicePOSIntegration(Entities.POSIntegrationTrnSalesInvoice POSIntegrationTrnSalesInvoiceObject) { try { var branch = from d in db.MstBranches where d.BranchCode == POSIntegrationTrnSalesInvoiceObject.BranchCode select d; if (branch.Any()) { Int32 currentBranchId = branch.FirstOrDefault().Id; var SINumberResult = "0000000001"; var lastSalesInvoice = from d in db.TrnSalesInvoices.OrderByDescending(d => d.Id) where d.BranchId == currentBranchId select d; if (lastSalesInvoice.Any()) { var SINumber = Convert.ToInt32(lastSalesInvoice.FirstOrDefault().SINumber) + 0000000001; SINumberResult = ZeroFill(SINumber, 10); } Boolean customerExist = false; var customers = from d in db.MstArticles where d.ManualArticleCode == POSIntegrationTrnSalesInvoiceObject.CustomerManualArticleCode && d.ArticleTypeId == 2 select d; if (customers.Any()) { customerExist = true; } Boolean userExist = false; var users = from d in db.MstUsers where d.UserName == POSIntegrationTrnSalesInvoiceObject.CreatedBy select d; if (users.Any()) { userExist = true; } Boolean termExist = false; var terms = from d in db.MstTerms where d.Term == POSIntegrationTrnSalesInvoiceObject.Term select d; if (terms.Any()) { termExist = true; } if (customerExist) { if (userExist) { if (termExist) { Data.TrnSalesInvoice addSalesInvoice = new Data.TrnSalesInvoice { BranchId = currentBranchId, SINumber = SINumberResult, SIDate = Convert.ToDateTime(POSIntegrationTrnSalesInvoiceObject.SIDate), CustomerId = customers.FirstOrDefault().Id, TermId = terms.FirstOrDefault().Id, DocumentReference = POSIntegrationTrnSalesInvoiceObject.DocumentReference, ManualSINumber = POSIntegrationTrnSalesInvoiceObject.ManualSINumber, Remarks = POSIntegrationTrnSalesInvoiceObject.Remarks, Amount = 0, PaidAmount = 0, AdjustmentAmount = 0, BalanceAmount = 0, SoldById = users.FirstOrDefault().Id, PreparedById = users.FirstOrDefault().Id, CheckedById = users.FirstOrDefault().Id, ApprovedById = users.FirstOrDefault().Id, Status = null, IsCancelled = false, IsPrinted = false, IsLocked = true, CreatedById = users.FirstOrDefault().Id, CreatedDateTime = DateTime.Now, UpdatedById = users.FirstOrDefault().Id, UpdatedDateTime = DateTime.Now }; db.TrnSalesInvoices.InsertOnSubmit(addSalesInvoice); db.SubmitChanges(); foreach (var salesInvoiceItem in POSIntegrationTrnSalesInvoiceObject.ListPOSIntegrationTrnSalesInvoiceItem.ToList()) { Boolean itemExist = false; var items = from d in db.MstArticles where d.ManualArticleCode == salesInvoiceItem.ItemManualArticleCode && d.ArticleTypeId == 1 select d; if (items.Any()) { itemExist = true; } if (itemExist) { Int32?itemInventoryId = null; var articleInventory = from d in db.MstArticleInventories where d.BranchId == currentBranchId && d.ArticleId == items.FirstOrDefault().Id select d; if (articleInventory.Any()) { itemInventoryId = articleInventory.FirstOrDefault().Id; } Boolean unitExist = false; var units = from d in db.MstUnits where d.Unit == salesInvoiceItem.Unit select d; if (units.Any()) { unitExist = true; } Boolean discountExist = false; var discounts = from d in db.MstDiscounts where d.Discount == salesInvoiceItem.Discount select d; if (discounts.Any()) { discountExist = true; } Boolean taxExist = false; var taxes = from d in db.MstTaxTypes where d.TaxType == salesInvoiceItem.VAT select d; if (taxes.Any()) { taxExist = true; } if (unitExist) { if (discountExist) { if (taxExist) { var conversionUnit = from d in db.MstArticleUnits where d.ArticleId == items.FirstOrDefault().Id && d.UnitId == items.FirstOrDefault().UnitId select d; if (conversionUnit.Any()) { Decimal baseQuantity = salesInvoiceItem.Quantity * 1; if (conversionUnit.FirstOrDefault().Multiplier > 0) { baseQuantity = salesInvoiceItem.Quantity * (1 / conversionUnit.FirstOrDefault().Multiplier); } Decimal basePrice = salesInvoiceItem.Amount; if (baseQuantity > 0) { basePrice = salesInvoiceItem.Amount / baseQuantity; } Data.TrnSalesInvoiceItem addSaleInvoiceItem = new Data.TrnSalesInvoiceItem { SIId = addSalesInvoice.Id, ItemId = items.FirstOrDefault().Id, ItemInventoryId = itemInventoryId, Particulars = salesInvoiceItem.Particulars, UnitId = units.FirstOrDefault().Id, Quantity = salesInvoiceItem.Quantity, Price = salesInvoiceItem.Price, DiscountId = discounts.FirstOrDefault().Id, DiscountRate = discounts.FirstOrDefault().DiscountRate, DiscountAmount = salesInvoiceItem.DiscountAmount, NetPrice = salesInvoiceItem.NetPrice, Amount = salesInvoiceItem.Amount, VATId = taxes.FirstOrDefault().Id, VATPercentage = taxes.FirstOrDefault().TaxRate, VATAmount = (salesInvoiceItem.Amount / (1 + (taxes.FirstOrDefault().TaxRate / 100))) * (taxes.FirstOrDefault().TaxRate / 100), BaseUnitId = items.FirstOrDefault().UnitId, BaseQuantity = baseQuantity, BasePrice = basePrice, SalesItemTimeStamp = Convert.ToDateTime(salesInvoiceItem.SalesItemTimeStamp) }; db.TrnSalesInvoiceItems.InsertOnSubmit(addSaleInvoiceItem); db.SubmitChanges(); } } } } } } var salesInvoice = from d in db.TrnSalesInvoices where d.Id == addSalesInvoice.Id select d; if (salesInvoice.Any()) { var salesInvoiceItems = from d in db.TrnSalesInvoiceItems where d.SIId == addSalesInvoice.Id select d; Decimal totalSalesInvoiceItemAmount = 0; if (salesInvoiceItems.Any()) { totalSalesInvoiceItemAmount = salesInvoiceItems.Sum(d => d.Amount); } var updateSalesInvoiceAmount = salesInvoice.FirstOrDefault(); updateSalesInvoiceAmount.Amount = totalSalesInvoiceItemAmount; updateSalesInvoiceAmount.BalanceAmount = totalSalesInvoiceItemAmount; db.SubmitChanges(); } var salesInvoiceForBusiness = from d in db.TrnSalesInvoices where d.Id == Convert.ToInt32(addSalesInvoice.Id) select d; if (salesInvoiceForBusiness.Any()) { inventory.InsertSalesInvoiceInventory(Convert.ToInt32(salesInvoiceForBusiness.FirstOrDefault().Id)); journal.InsertSalesInvoiceJournal(Convert.ToInt32(salesInvoiceForBusiness.FirstOrDefault().Id)); } return(Request.CreateResponse(HttpStatusCode.OK, addSalesInvoice.SINumber)); } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Easyfis: Term Not Exist!")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Easyfis: User Not Exist!")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Easyfis: Customer Not Exist!")); } } else { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Easyfis: Branch Not Exist!")); } } catch (Exception e) { Debug.WriteLine(e); return(Request.CreateResponse(HttpStatusCode.InternalServerError, "Something's went wrong from the server.")); } }