Пример #1
0
        public ResultModels InsertDataSaleFromPOS(PosSaleReportReturnModels datas)
        {
            NSLog.Logger.Info("Start InsertDataSaleFromPOS (Pos Sale).......................", datas);

            var result = new ResultModels();

            if (datas != null && (datas.PosSaleReportDTOs != null && datas.PosSaleReportDTOs.Any()))
            {
                PosSaleFactory posSaleFactory = new PosSaleFactory();
                result.IsOk = posSaleFactory.Insert(datas);
            }
            return(result);
        }
Пример #2
0
        public bool Insert(PosSaleReportReturnModels datas)
        {
            List <PosSaleModels>       lstPosSale       = datas.PosSaleReportDTOs;
            List <PosSaleDetailModels> lstPosSaleDetail = datas.PosSaleDetailReportDTOs;
            bool             result      = true;
            List <R_PosSale> lstPosSales = new List <R_PosSale>();

            using (NuWebContext cxt = new NuWebContext())
            {
                using (var transaction = cxt.Database.BeginTransaction())
                {
                    try
                    {
                        var storeId = string.Empty;
                        if (lstPosSale != null && lstPosSale.Any())
                        {
                            var infoPosSale = lstPosSale.FirstOrDefault();
                            storeId = infoPosSale.StoreId;
                            var obj = cxt.R_PosSale.Where(ww => ww.BusinessId == infoPosSale.BusinessId &&
                                                          ww.StoreId == infoPosSale.StoreId).FirstOrDefault();
                            if (obj != null)
                            {
                                NSLog.Logger.Info("Insert PosSale data exist", infoPosSale);
                                //isPosSaleData = false;
                            }
                            else
                            {
                                var lstPosSalesEntity = lstPosSale.Select(ss => new R_PosSale()
                                {
                                    Id                 = Guid.NewGuid().ToString(),
                                    StoreId            = ss.StoreId,
                                    BusinessId         = ss.BusinessId,
                                    OrderId            = ss.OrderId,
                                    OrderNo            = ss.OrderNo,
                                    ReceiptNo          = ss.ReceiptNo,
                                    CreatedDate        = ss.CreatedDate,
                                    ReceiptCreatedDate = ss.ReceiptCreatedDate,
                                    OrderStatus        = ss.OrderStatus,
                                    TableNo            = ss.TableNo,
                                    NoOfPerson         = ss.NoOfPerson,
                                    CancelAmount       = ss.CancelAmount,
                                    ReceiptTotal       = ss.ReceiptTotal,
                                    Discount           = ss.Discount,
                                    Tip                = ss.Tip,
                                    PromotionValue     = ss.PromotionValue,
                                    ServiceCharge      = ss.ServiceCharge,
                                    GST                = ss.GST,
                                    Rounding           = ss.Rounding,
                                    Refund             = ss.Refund,
                                    //NetSales = ss.NetSales,
                                    CashierId    = ss.CashierId,
                                    CashierName  = ss.CashierName,
                                    Mode         = ss.Mode,
                                    CreditNoteNo = ss.CreditNoteNo
                                }).ToList();
                                //add to db
                                cxt.R_PosSale.AddRange(lstPosSalesEntity);
                            }
                        }
                        if (lstPosSaleDetail != null && lstPosSaleDetail.Any())
                        {
                            var infoPosSaleDetail = lstPosSaleDetail.FirstOrDefault();
                            var obj = cxt.R_PosSaleDetail.Where(ww => ww.BusinessId == infoPosSaleDetail.BusinessId &&
                                                                ww.StoreId == infoPosSaleDetail.StoreId).FirstOrDefault();
                            if (obj != null)
                            {
                                NSLog.Logger.Info("Insert PosSaleDetail data exist", infoPosSaleDetail);
                            }
                            else
                            {
                                var lstPosSaleDetailsEntity = lstPosSaleDetail.Select(ss => new R_PosSaleDetail()
                                {
                                    Id              = Guid.NewGuid().ToString(),
                                    StoreId         = ss.StoreId,
                                    BusinessId      = ss.BusinessId,
                                    OrderId         = ss.OrderId,
                                    OrderDetailId   = ss.OrderDetailId,
                                    ItemId          = ss.ItemId,
                                    ItemTypeId      = ss.ItemTypeId,
                                    ParentId        = ss.ParentId,
                                    ItemCode        = ss.ItemCode,
                                    ItemName        = ss.ItemName,
                                    CategoryId      = ss.CategoryId,
                                    CategoryName    = ss.CategoryName,
                                    GLAccountCode   = ss.GLAccountCode,
                                    Quantity        = ss.Quantity,
                                    Price           = ss.Price,
                                    ExtraPrice      = ss.ExtraPrice,
                                    TotalAmount     = ss.TotalAmount,
                                    Discount        = ss.Discount,
                                    Cost            = ss.Cost,
                                    ServiceCharge   = ss.ServiceCharge,
                                    Tax             = ss.Tax,
                                    PromotionAmount = ss.PromotionAmount,
                                    PoinsOrderId    = ss.PoinsOrderId,
                                    GiftCardId      = ss.GiftCardId,
                                    IsIncludeSale   = ss.IsIncludeSale,
                                    CreatedDate     = ss.CreatedDate,
                                    Mode            = ss.Mode,
                                    IsDiscountTotal = ss.IsDiscountTotal,
                                    CancelUser      = ss.CancelUser,
                                    RefundUser      = ss.RefundUser,
                                    TaxType         = ss.TaxType
                                }).ToList();

                                //add to db
                                cxt.R_PosSaleDetail.AddRange(lstPosSaleDetailsEntity);
                            }
                        }
                        cxt.SaveChanges();
                        transaction.Commit();
                        NSLog.Logger.Info("Insert PosSale data success");
                        //push to xero
                        Task.Run(() => PushInvoiceToXexo(storeId, lstPosSaleDetail, datas.PaymentReportXeroDTOs, datas.BusinessInfo));
                    }
                    catch (Exception ex)
                    {
                        NSLog.Logger.Error("Insert PosSale data fail", ex);
                        result = false;
                        transaction.Rollback();
                    }
                    finally
                    {
                        if (cxt != null)
                        {
                            cxt.Dispose();
                        }
                    }
                } // end using transaction
            }     //end using context

            return(result);
        }