Ejemplo n.º 1
0
        public async Task <IActionResult> PutRegularInvoice(string id, RegularInvoice regularInvoice)
        {
            if (id != regularInvoice.InvoiceNo)
            {
                return(BadRequest());
            }

            _context.Entry(regularInvoice).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RegularInvoiceExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public int CreateSaleEntry(VoyagerContext db, DateTime onDate, AprajitaRetailsContext arDB)
        {
            int  ctr   = 0;
            bool isVat = false;

            if (onDate < new DateTime(2017, 7, 1))
            {
                isVat = true;
                return(-1);// TODO: Temp implement for vat system
            }
            RegularInvoice saleInvoice = null;
            var            data        = db.ImportSaleItemWises.Where(c => c.IsDataConsumed == false && c.InvoiceDate.Date == onDate.Date).OrderBy(c => c.InvoiceNo).ToList();

            if (data != null)
            {
                foreach (var item in data)
                {
                    saleInvoice = CreateSaleInvoice(db, arDB, item, saleInvoice); //Create SaleInvoice
                    saleInvoice.SaleItems.Add(CreateSaleItem(db, item));          // Create SaleItems
                    ctr++;
                }
                if (saleInvoice != null)
                {
                    db.RegularInvoices.Add(saleInvoice);    // Save Last Sale Invoice
                    db.SaveChanges();
                    CreateDailySale(arDB, db, saleInvoice); // Create DailySale Entry
                }
                return(ctr);
            }
            else
            {
                return(ctr);
            }
        }
Ejemplo n.º 3
0
        public string RePrintManaulInvoice(eStoreDbContext db, RegularInvoice invoice, int StoreId = 1)
        {
            ReceiptHeader             header         = PrinterHelper.GetReceiptHeader(db, StoreId);
            ReceiptDetails            details        = PrinterHelper.GetReceiptDetails(invoice.InvoiceNo, invoice.OnDate, DateTime.Now.ToShortTimeString(), invoice.Customer.FullName);
            ReceiptItemTotal          itemtotal      = PrinterHelper.GetReceiptItemTotal(invoice);
            List <ReceiptItemDetails> itemDetailList = PrinterHelper.GetInvoiceDetails(db, invoice.SaleItems.ToList());

            return(InvoicePrinter.PrintManaulInvoice(header, itemtotal, details, itemDetailList, true));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get RecieptTotals
        /// </summary>
        /// <param name="inv"></param>
        /// <returns></returns>
        public static ReceiptItemTotal GetReceiptItemTotal(RegularInvoice inv)
        {
            ReceiptItemTotal total = new ReceiptItemTotal
            {
                ItemCount  = inv.TotalItems.ToString(),
                TotalItem  = inv.TotalQty.ToString("0.##"),
                NetAmount  = inv.TotalBillAmount.ToString("0.##"),
                CashAmount = inv.PaymentDetail.CashAmount.ToString("0.##"),
            };

            return(total);
        }
Ejemplo n.º 5
0
        public static SaleInvoiceView CopyTo(RegularInvoice inv, List <RegularSaleItem> sItems)
        {
            List <SaleItemView> saleItems = new List <SaleItemView>();

            foreach (var item in sItems)
            {
                SaleItemView si = new SaleItemView
                {
                    BarCode     = item.BarCode,
                    BillAmount  = item.BillAmount,
                    MRP         = item.MRP,
                    Qty         = item.Qty,
                    ProductName = item.ProductItem.ProductName,
                    SmCode      = item.Salesman.SalesmanName,
                    Units       = "Pcs/Mtrs"
                };
                saleItems.Add(si);
                //TODO: add unit name
            }


            SaleInvoiceView vm = new SaleInvoiceView
            {
                SaleItems    = saleItems,
                InvoiceNo    = inv.InvoiceNo,
                OnDate       = inv.OnDate,
                NoofItem     = inv.TotalItems.ToString(),
                CustomerName = inv.Customer.FullName,
                TotalQty     = inv.TotalQty.ToString(),
                TotalAmount  = inv.TotalBillAmount.ToString(),
                Discount     = inv.TotalDiscountAmount.ToString()
            };

            if (inv.PaymentDetail.CardAmount > 0)
            {
                vm.PaymentMode = "Card";
                vm.CardAmount  = inv.PaymentDetail.CardAmount.ToString();
                vm.AuthCode    = inv.PaymentDetail.CardDetail.AuthCode.ToString();
                vm.CardNumber  = inv.PaymentDetail.CardDetail.LastDigit.ToString();
                vm.CardType    = "#";
            }
            else
            {
                vm.PaymentMode = "Cash";
                vm.CashAmount  = inv.PaymentDetail.CashAmount.ToString();
            }

            return(vm);
        }
Ejemplo n.º 6
0
        public async Task <ActionResult <RegularInvoice> > PostRegularInvoice(RegularInvoice regularInvoice)
        {
            _context.RegularInvoices.Add(regularInvoice);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (RegularInvoiceExists(regularInvoice.InvoiceNo))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetRegularInvoice", new { id = regularInvoice.InvoiceNo }, regularInvoice));
        }
Ejemplo n.º 7
0
        public InvoiceSaveReturn OnEdit(eStoreDbContext db, EditOrderDTO sales, int StoreId = 1)
        {
            Customer cust = db.Customers.Where(c => c.MobileNo == sales.MobileNo).FirstOrDefault();

            if (cust == null)
            {
                string[] names = sales.Name.Split(" ");
                string   FName = names[0];
                string   LName = "";
                for (int i = 1; i < names.Length; i++)
                {
                    LName += names[i] + " ";
                }

                cust = new Customer
                {
                    City        = "",
                    Age         = 30,
                    FirstName   = FName,
                    Gender      = Gender.Male,
                    LastName    = LName,
                    MobileNo    = sales.MobileNo,
                    NoOfBills   = 0,
                    TotalAmount = 0,
                    CreatedDate = DateTime.Now.Date
                };
                db.Customers.Add(cust);
                db.SaveChanges();
            }
            RegularInvoice inv = db.RegularInvoices.Find(sales.InvoiceNo);

            if (inv == null)
            {
                return(null);
            }
            inv.SaleItems     = db.RegularSaleItems.Where(c => c.InvoiceNo == sales.InvoiceNo).ToList();
            inv.PaymentDetail = db.PaymentDetails.Include(c => c.CardAmount).Where(c => c.InvoiceNo == sales.InvoiceNo).FirstOrDefault();

            return(null);//TODO: temp
        }
        private void CreateDailySale(AprajitaRetailsContext db, VoyagerContext voyager, RegularInvoice inv)
        {
            var dSale = db.DailySales.Where(c => c.InvNo == inv.InvoiceNo).FirstOrDefault();

            if (dSale != null)
            {
                dSale.IsMatchedWithVOy = true;
                if (dSale.Amount != inv.TotalBillAmount)
                {
                    dSale.Remarks         += "Amount doesn't match";
                    dSale.IsMatchedWithVOy = false;
                    db.Entry(dSale).State  = EntityState.Modified;
                }

                if (dSale.PayMode == PayModes.Cash)
                {
                    if (inv.PaymentDetail.PayMode != SalePayMode.Cash)
                    {
                        dSale.Remarks         += "payment mode doesn't match";
                        dSale.IsMatchedWithVOy = false;
                        db.Entry(dSale).State  = EntityState.Modified;
                    }

                    if (dSale.CashAmount != inv.TotalBillAmount)
                    {
                        dSale.Remarks         += "cash amount doesn't match";
                        dSale.IsMatchedWithVOy = false;
                        db.Entry(dSale).State  = EntityState.Modified;
                    }
                }
                else if (dSale.PayMode == PayModes.Card)
                {
                    if (inv.PaymentDetail.PayMode != SalePayMode.Card)
                    {
                        dSale.Remarks         += "payment mode doesn't match";
                        dSale.IsMatchedWithVOy = false;
                        db.Entry(dSale).State  = EntityState.Modified;
                    }
                }

                if (dSale.SaleDate != inv.OnDate)
                {
                    dSale.Remarks         += "Date doesn't match";
                    dSale.IsMatchedWithVOy = false;
                    db.Entry(dSale).State  = EntityState.Modified;
                }
            }
            else
            {
                DailySale dailySale = new DailySale
                {
                    Amount           = inv.TotalBillAmount,
                    InvNo            = inv.InvoiceNo,
                    SaleDate         = inv.OnDate,
                    IsDue            = false,
                    IsManualBill     = false,
                    Remarks          = "AutoGenerated",
                    CashAmount       = 0,
                    IsMatchedWithVOy = true,
                    IsSaleReturn     = false,
                    IsTailoringBill  = false
                };
                dailySale.SalesmanId = db.Salesmen.Where(c => c.SalesmanName == inv.SaleItems.First().Salesman.SalesmanName).Select(c => c.SalesmanId).FirstOrDefault();
                if (dailySale.SalesmanId <= 0)
                {
                    dailySale.SalesmanId = CreateSalesman(db, inv.SaleItems.First().Salesman.SalesmanName);
                }
                // Payment Mode.
                if (inv.PaymentDetail.PayMode == SalePayMode.Cash)
                {
                    dailySale.PayMode    = PayModes.Cash;
                    dailySale.CashAmount = inv.TotalBillAmount;
                }
                else if (inv.PaymentDetail.PayMode == SalePayMode.Card)
                {
                    dailySale.PayMode = PayModes.Card;
                }
                else if (inv.PaymentDetail.PayMode == SalePayMode.Mix)
                {
                    dailySale.PayMode  = PayModes.MixPayments;
                    dailySale.Remarks += " Mix Payments. Update based on real Data";
                }
                else if (inv.PaymentDetail.PayMode == SalePayMode.SR)
                { // Sale Return flag is marked
                    dailySale.PayMode      = PayModes.Cash;
                    dailySale.CashAmount   = inv.TotalBillAmount;
                    dailySale.IsSaleReturn = true;
                }
                //IsTailoring
                if (inv.SaleItems.First().ProductItem != null && inv.SaleItems.First().ProductItem.Categorys == ProductCategorys.Tailoring)
                {
                    dailySale.IsTailoringBill = true;
                }
                else if (inv.SaleItems.First().ProductItem == null)
                {
                    if (voyager.ProductItems.Find(inv.SaleItems.First().ProductItemId).Categorys == ProductCategorys.Tailoring)
                    {
                        dailySale.IsTailoringBill = true;
                    }
                }
                db.DailySales.Add(dailySale);
            }
            db.SaveChanges();
        }
        private RegularInvoice CreateSaleInvoice(VoyagerContext db, AprajitaRetailsContext arDB, ImportSaleItemWise item, RegularInvoice invoice)
        {
            if (invoice != null)
            {
                if (invoice.InvoiceNo == item.InvoiceNo)
                {
                    //invoice.InvoiceNo = item.InvoiceNo;
                    //invoice.OnDate = item.InvoiceDate;
                    invoice.TotalDiscountAmount += item.Discount;
                    invoice.TotalBillAmount     += item.LineTotal; // Check for if it is empty
                    invoice.TotalItems          += 1;              //TODO: Check for count
                    invoice.TotalQty            += item.Quantity;
                    invoice.RoundOffAmount      += item.RoundOff;
                    invoice.TotalTaxAmount      += (item.SGST + item.CGST); //TODO: Check Future make it tax
                    invoice.StoreId              = item.StoreId;
                    if (invoice.PaymentDetail == null)
                    {
                        invoice.PaymentDetail = CreatePaymentDetails(db, item); //Create Payment details
                    }
                    invoice.CustomerId = GetCustomerId(db, item);               // CustomerId
                }
                else
                {
                    db.RegularInvoices.Add(invoice);
                    db.SaveChanges();
                    CreateDailySale(arDB, db, invoice);

                    invoice = new RegularInvoice
                    {
                        InvoiceNo           = item.InvoiceNo,
                        OnDate              = item.InvoiceDate,
                        TotalDiscountAmount = item.Discount,
                        TotalBillAmount     = item.LineTotal,
                        TotalItems          = 1,//TODO: Check for count
                        TotalQty            = item.Quantity,
                        RoundOffAmount      = item.RoundOff,
                        TotalTaxAmount      = (item.SGST + item.CGST), //TODO: Check
                        PaymentDetail       = CreatePaymentDetails(db, item),
                        CustomerId          = GetCustomerId(db, item),
                        StoreId             = item.StoreId,
                        SaleItems           = new List <RegularSaleItem> ()
                    };
                }
            }
            else
            {
                invoice = new RegularInvoice
                {
                    InvoiceNo           = item.InvoiceNo,
                    OnDate              = item.InvoiceDate,
                    TotalDiscountAmount = item.Discount,
                    TotalBillAmount     = item.LineTotal,
                    TotalItems          = 1,//TODO: Check for count
                    TotalQty            = item.Quantity,
                    RoundOffAmount      = item.RoundOff,
                    TotalTaxAmount      = (item.SGST + item.CGST), //TODO: Check
                    PaymentDetail       = CreatePaymentDetails(db, item),
                    CustomerId          = GetCustomerId(db, item),
                    StoreId             = item.StoreId,
                    SaleItems           = new List <RegularSaleItem> ()
                };
            }

            return(invoice);
        }
        private RegularInvoice CreateSaleInvoice(VoyagerContext db, ImportSaleItemWise item, RegularInvoice invoice)
        {
            if (invoice != null)
            {
                if (invoice.InvoiceNo == item.InvoiceNo)
                {
                    // invoice.InvoiceNo = item.InvoiceNo;
                    //invoice.OnDate = item.InvoiceDate;
                    invoice.TotalDiscountAmount += item.Discount;
                    invoice.TotalBillAmount     += item.LineTotal;
                    invoice.TotalItems          += 1;//TODO: Check for count
                    invoice.TotalQty            += item.Quantity;
                    invoice.RoundOffAmount      += item.RoundOff;
                    invoice.TotalTaxAmount      += item.SGST; //TODO: Check
                    invoice.StoreId              = item.StoreId;
                    invoice.PaymentDetail        = CreatePaymentDetails(db, item);
                    invoice.CustomerId           = GetCustomerId(db, item);
                }
                else
                {
                    db.RegularInvoices.Add(invoice);
                    db.SaveChanges();

                    invoice = new RegularInvoice
                    {
                        InvoiceNo           = item.InvoiceNo,
                        OnDate              = item.InvoiceDate,
                        TotalDiscountAmount = item.Discount,
                        TotalBillAmount     = item.LineTotal,
                        TotalItems          = 1,//TODO: Check for count
                        TotalQty            = item.Quantity,
                        RoundOffAmount      = item.RoundOff,
                        TotalTaxAmount      = item.SGST, //TODO: Check
                        PaymentDetail       = CreatePaymentDetails(db, item),
                        CustomerId          = GetCustomerId(db, item),
                        StoreId             = item.StoreId,
                        SaleItems           = new List <RegularSaleItem> ()
                    };
                }
            }
            else
            {
                invoice = new RegularInvoice
                {
                    InvoiceNo           = item.InvoiceNo,
                    OnDate              = item.InvoiceDate,
                    TotalDiscountAmount = item.Discount,
                    TotalBillAmount     = item.LineTotal,
                    TotalItems          = 1,//TODO: Check for count
                    TotalQty            = item.Quantity,
                    RoundOffAmount      = item.RoundOff,
                    TotalTaxAmount      = item.SGST, //TODO: Check
                    PaymentDetail       = CreatePaymentDetails(db, item),
                    CustomerId          = GetCustomerId(db, item),
                    StoreId             = item.StoreId,
                    SaleItems           = new List <RegularSaleItem> ()
                };
            }

            return(invoice);
        }
Ejemplo n.º 11
0
        public InvoiceSaveReturn OnInsert(eStoreDbContext db, SaveOrderDTO sales, string userName, int StoreId = 1)
        {
            Customer cust = db.Customers.Where(c => c.MobileNo == sales.MobileNo).FirstOrDefault();

            if (cust == null)
            {
                string[] names = sales.Name.Split(" ");
                string   FName = names[0];
                string   LName = "";
                for (int i = 1; i < names.Length; i++)
                {
                    LName += names[i] + " ";
                }

                cust = new Customer
                {
                    City        = sales.Address,
                    Age         = 30,
                    FirstName   = FName,
                    Gender      = Gender.Male,
                    LastName    = LName,
                    MobileNo    = sales.MobileNo,
                    NoOfBills   = 0,
                    TotalAmount = 0,
                    CreatedDate = DateTime.Now.Date
                };
                db.Customers.Add(cust);
            }
            string InvNo = GenerateInvoiceNo(db, StoreId, true);
            List <RegularSaleItem> itemList  = new List <RegularSaleItem>();
            List <Stock>           stockList = new List <Stock>();

            foreach (var item in sales.SaleItems)
            {
                RegularSaleItem sItem = new RegularSaleItem
                {
                    BarCode       = item.BarCode,
                    MRP           = item.Price,
                    Qty           = item.Quantity,
                    Discount      = 0,
                    SalesmanId    = item.Salesman,
                    Units         = item.Units,
                    InvoiceNo     = InvNo,
                    BasicAmount   = item.Amount,
                    TaxAmount     = 0,
                    ProductItemId = -1,
                    BillAmount    = 0,
                    SaleTaxTypeId = 1, //TODO: default tax id needed
                };
                ProductItem pItem = db.ProductItems.Where(c => c.Barcode == item.BarCode).FirstOrDefault();
                Stock       stock = db.Stocks.Where(c => c.ProductItemId == pItem.ProductItemId && c.StoreId == StoreId).FirstOrDefault();

                sItem.ProductItemId = pItem.ProductItemId;
                decimal amt = (decimal)item.Quantity * item.Price;
                sItem.BasicAmount = (amt * 100) / (100 + pItem.TaxRate);
                sItem.TaxAmount   = (sItem.BasicAmount * pItem.TaxRate) / 100;
                sItem.BillAmount  = sItem.BasicAmount + sItem.TaxAmount;
                //SaleTax Id
                var taxid = db.SaleTaxTypes.Where(c => c.CompositeRate == pItem.TaxRate).Select(c => c.SaleTaxTypeId).FirstOrDefault();
                if (taxid <= 0)
                {
                    taxid = 1; //TODO: Handle it for creating new saletax id
                }
                sItem.SaleTaxTypeId = taxid;

                itemList.Add(sItem);


                stock.SaleQty  += item.Quantity;
                stock.Quantity -= item.Quantity;
                stockList.Add(stock);
            }
            var           totalBillamt  = itemList.Sum(c => c.BillAmount);
            var           totaltaxamt   = itemList.Sum(c => c.TaxAmount);
            var           totalDiscount = itemList.Sum(c => c.Discount);
            var           totalQty      = itemList.Sum(c => c.Qty);
            var           totalitem     = itemList.Count;
            decimal       roundoffamt   = Math.Round(totalBillamt) - totalBillamt;
            PaymentDetail pd            = new PaymentDetail
            {
                CardAmount   = sales.PaymentInfo.CardAmount,
                CashAmount   = sales.PaymentInfo.CashAmount,
                InvoiceNo    = InvNo,
                IsManualBill = true,
                MixAmount    = 0,
                PayMode      = SalePayMode.Cash
            };

            if (sales.PaymentInfo.CardAmount > 0)
            {
                if (sales.PaymentInfo.CashAmount > 0)
                {
                    pd.PayMode = SalePayMode.Mix;
                }
                else
                {
                    pd.PayMode = SalePayMode.Card;
                }

                CardDetail cd = new CardDetail
                {
                    CardCode  = CardType.Visa,//TODO: default
                    Amount    = sales.PaymentInfo.CardAmount,
                    AuthCode  = (int)Int64.Parse(sales.PaymentInfo.AuthCode),
                    InvoiceNo = InvNo,
                    LastDigit = (int)Int64.Parse(sales.PaymentInfo.CardNo),
                    CardType  = CardMode.DebitCard//TODO: default
                };

                if (sales.PaymentInfo.CardType.Contains("Debit") || sales.PaymentInfo.CardType.Contains("debit") || sales.PaymentInfo.CardType.Contains("DEBIT"))
                {
                    cd.CardType = CardMode.DebitCard;
                }
                else if (sales.PaymentInfo.CardType.Contains("Credit") || sales.PaymentInfo.CardType.Contains("credit") || sales.PaymentInfo.CardType.Contains("CREDIT"))
                {
                    cd.CardType = CardMode.CreditCard;
                }

                if (sales.PaymentInfo.CardType.Contains("visa") || sales.PaymentInfo.CardType.Contains("Visa") || sales.PaymentInfo.CardType.Contains("VISA"))
                {
                    cd.CardCode = CardType.Visa;
                }
                else if (sales.PaymentInfo.CardType.Contains("MasterCard") || sales.PaymentInfo.CardType.Contains("mastercard") || sales.PaymentInfo.CardType.Contains("MASTERCARD"))
                {
                    cd.CardCode = CardType.MasterCard;
                }
                else if (sales.PaymentInfo.CardType.Contains("Rupay") || sales.PaymentInfo.CardType.Contains("rupay") || sales.PaymentInfo.CardType.Contains("RUPAY"))
                {
                    cd.CardCode = CardType.Rupay;
                }
                else if (sales.PaymentInfo.CardType.Contains("MASTRO") || sales.PaymentInfo.CardType.Contains("mastro") || sales.PaymentInfo.CardType.Contains("Mastro"))
                {
                    cd.CardCode = CardType.Rupay;
                }

                pd.CardDetail = cd;
            }
            RegularInvoice Invoice = new RegularInvoice
            {
                Customer            = cust,
                InvoiceNo           = InvNo,
                OnDate              = sales.OnDate,
                IsManualBill        = true,
                StoreId             = StoreId,
                SaleItems           = itemList,
                CustomerId          = cust.CustomerId,
                TotalBillAmount     = totalBillamt + roundoffamt,
                TotalDiscountAmount = totalDiscount,
                TotalItems          = totalitem,
                TotalQty            = totalQty,
                TotalTaxAmount      = totaltaxamt,
                RoundOffAmount      = roundoffamt,
                PaymentDetail       = pd,
                UserId              = userName
            };

            db.RegularInvoices.Add(Invoice);
            db.Stocks.UpdateRange(stockList);
            InvoiceSaveReturn returnData = new InvoiceSaveReturn
            {
                NoOfRecord = db.SaveChanges(),
                FileName   = "NotSaved"
            };

            if (returnData.NoOfRecord > 0)
            {
                ReceiptHeader             header         = PrinterHelper.GetReceiptHeader(db, StoreId);
                ReceiptDetails            details        = PrinterHelper.GetReceiptDetails(Invoice.InvoiceNo, Invoice.OnDate, DateTime.Now.ToShortTimeString(), sales.Name);
                ReceiptItemTotal          itemtotal      = PrinterHelper.GetReceiptItemTotal(Invoice);
                List <ReceiptItemDetails> itemDetailList = PrinterHelper.GetInvoiceDetails(db, itemList);
                returnData.FileName = "/" + InvoicePrinter.PrintManaulInvoice(header, itemtotal, details, itemDetailList, false);
            }
            return(returnData);
        }