Example #1
0
        public override int SaveInvoiceData(Seller seller)
        {
            cls_Invoice invoiceObject = new cls_Invoice();
            int         result        = 0;

            GST_TRN_INVOICE inv = new GST_TRN_INVOICE();

            inv.InvoiceNo    = seller.SellerInvoice;
            inv.InvoiceDate  = DateTime.Now;//Convert.ToDateTime(seller.DateOfInvoice);
            inv.InvoiceMonth = Convert.ToByte(DateTime.Now.Month);
            //  inv.InvoiceMonth = Convert.ToByte(DateTime.Now.Month);
            inv.SellerUserID               = seller.SellerUserID;
            inv.ReceiverUserID             = seller.Reciever.RecieveruserID;
            inv.ConsigneeUserID            = seller.Consignee.ConsigneeUserID;
            inv.VendorID                   = seller.Invoice.VendorID;
            inv.TransShipment_ID           = seller.Invoice.TransShipment_ID;
            inv.Freight                    = seller.Invoice.Freight;
            inv.Insurance                  = seller.Invoice.Insurance;
            inv.PackingAndForwadingCharges = seller.Invoice.PackingAndForwadingCharges;
            inv.FinYear_ID                 = invoiceObject.GetCurrentFinYear(); // Convert.ToInt32(DateTime.UtcNow.Year + "-" + DateTime.UtcNow.AddYears(1));//Convert.ToInt32(seller.SerialNoInvoice.FinancialYear);
            // inv.IsInter = seller.Reciever.StateCode == seller.Consignee.StateCode ? true : false;
            inv.ReceiverFinYear_ID = invoiceObject.GetCurrentFinYear();         // Convert.ToInt32(DateTime.UtcNow.Year + "-" + DateTime.UtcNow.AddYears(1));// Convert.ToInt32(seller.SerialNoInvoice.FinancialYear);
            inv.Status             = true;
            inv.CreatedDate        = DateTime.Now;
            inv.InvoiceStatus      = (byte)EnumConstants.InvoiceStatus.Fresh;
            // inv.InvoiceStatus = (byte)EnumConstants.InvoiceStatus.Fresh;
            bool isInter = GetConsumptionDestinationOfGoodsOrServices(seller.SellerStateCode, seller.Reciever.StateCode, seller.Consignee.StateCode);

            inv.IsInter            = isInter;
            inv.TaxBenefitingState = seller.Consignee.StateCode;
            inv.CreatedBy          = seller.CreatedBy;
            //condition for tax con.
            //if ((EnumConstants.InvoiceSpecialCondition.Regular).ToString || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.Export) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.Advance) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.JobWork) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.SEZUnit) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.SEZDeveloper) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.DeemedExport) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.B2CS) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.B2CL) || Convert.ToBoolean(EnumConstants.InvoiceSpecialCondition.ECommerce))
            if (seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Regular.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Export.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Advance.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.JobWork.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.SEZDeveloper.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.SEZUnit.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.DeemedExport.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.B2CS.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.B2CL.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.ECommerce.ToString())
            // if (seller.Invoice.InvoiceSpecialCondition == (EnumConstants.InvoiceSpecialCondition.Regular) || (EnumConstants.InvoiceSpecialCondition.Export) || (EnumConstants.InvoiceSpecialCondition.Advance).ToString() || (EnumConstants.InvoiceSpecialCondition.JobWork).ToString() || (EnumConstants.InvoiceSpecialCondition.SEZUnit).ToString() || (EnumConstants.InvoiceSpecialCondition.SEZDeveloper).ToString() || (EnumConstants.InvoiceSpecialCondition.DeemedExport).ToString() || (EnumConstants.InvoiceSpecialCondition.B2CS).ToString() || (EnumConstants.InvoiceSpecialCondition.B2CL).ToString() || (EnumConstants.InvoiceSpecialCondition.ECommerce).ToString())
            {
                //inv.InvoiceUserID = seller.Reciever.RecieveruserID;
                inv.InvoiceUserID = seller.SellerUserID;
            }
            else
            {
                inv.InvoiceUserID = seller.Reciever.RecieveruserID;
            }
            inv.InvoiceType = (byte)(EnumConstants.InvoiceType)Enum.Parse(typeof(EnumConstants.InvoiceType), seller.Invoice.InvoiceType);

            if (inv.InvoiceType == (byte)EnumConstants.InvoiceType.B2C)
            {
                var totalBillamount = seller.Invoice.LineEntry.Sum(amt => amt.AmountWithTax);
                if (totalBillamount > 250000)
                {
                    inv.InvoiceSpecialCondition = (byte)(EnumConstants.InvoiceSpecialCondition.B2CL);
                }
                else
                {
                    inv.InvoiceSpecialCondition = (byte)(EnumConstants.InvoiceSpecialCondition)Enum.Parse(typeof(EnumConstants.InvoiceSpecialCondition), seller.Invoice.InvoiceSpecialCondition);
                }
            }
            else
            {
                inv.InvoiceSpecialCondition = (byte)(EnumConstants.InvoiceSpecialCondition)Enum.Parse(typeof(EnumConstants.InvoiceSpecialCondition), seller.Invoice.InvoiceSpecialCondition);
            }

            if (inv.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.ECommerce)
            {
                inv.OrderDate = seller.OrderDate;
            }

            var invoiceCreate = unitOfWork.InvoiceRepository.Create(inv);

            unitOfWork.Save();

            if (seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Export.ToString())
            {
                bool isStateExampted = false;
            }
            else
            {
                bool isStateExampted = unitOfWork.StateRepository.Find(f => f.StateCode == seller.Consignee.StateCode).IsExempted.Value;
            }
            bool isExported = false;

            if (seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Export.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.SEZDeveloper.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.SEZUnit.ToString() || seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.DeemedExport.ToString())
            {
                isExported = true;
            }

            bool isJobwork   = (seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.JobWork.ToString());
            bool isImport    = (seller.Invoice.InvoiceSpecialCondition == EnumConstants.InvoiceSpecialCondition.Import.ToString());
            var  stateData   = unitOfWork.StateRepository.Find(c => c.StateCode == seller.SellerStateCode);
            var  isUTState   = stateData.UT.Value;
            var  isExempted  = stateData.IsExempted.Value;
            var  isEcom      = false;
            var  isUn        = false;
            var  invLineItem = from invo in seller.Invoice.LineEntry
                               select new GST_TRN_INVOICE_DATA
            {
                InvoiceID = invoiceCreate.InvoiceID,
                LineID    = invo.LineID,
                // GST_MST_ITEM = invo.Item,
                Item_ID       = invo.Item.Item_ID,
                Qty           = invo.Qty,
                Rate          = invo.PerUnitRate,
                TotalAmount   = invo.TotalLineIDWise,
                Discount      = invo.Discount,
                TaxableAmount = invo.TaxableValueLineIDWise,
                // TotalAmountWithTax = invo.TaxValue,
                IGSTRate = Calculate.TaxRate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.IGST, invo.TaxableValueLineIDWise, invo.Item.IGST.Value),                   //isJobwork ? 0 : (isUTState ? 0 : (isInter ? invo.Item.IGST : (isExport ? invo.Item.IGST : (isImport ? invo.Item.IGST : 0)))),
                IGSTAmt  = Calculate.TaxCalculate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.IGST, invo.TaxableValueLineIDWise, invo.Item.IGST.Value),              // isJobwork ? 0 : (isUTState ? 0 : (isInter ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : (isExport ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : (isImport ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : 0)))),
                CGSTRate = Calculate.TaxRate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.CGST, invo.TaxableValueLineIDWise, invo.Item.CGST.Value),
                CGSTAmt  = Calculate.TaxCalculate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.CGST, invo.TaxableValueLineIDWise, invo.Item.CGST.Value),
                SGSTRate = Calculate.TaxRate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.SGST, invo.TaxableValueLineIDWise, invo.Item.SGST.Value),
                SGSTAmt  = Calculate.TaxCalculate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.SGST, invo.TaxableValueLineIDWise, invo.Item.SGST.Value),
                UGSTRate = Calculate.TaxRate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.UTGST, invo.TaxableValueLineIDWise, invo.Item.UGST.Value),
                UGSTAmt  = Calculate.TaxCalculate(invo.Item, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.UTGST, invo.TaxableValueLineIDWise, invo.Item.UGST.Value),
                CessRate = isJobwork ? 0 : invo.Item.CESS,
                CessAmt  = isJobwork ? 0 : Calculate.CalculateCESSLineIDWise(invo.TaxableValueLineIDWise, invo.Item.CESS.Value)
            };


            foreach (GST_TRN_INVOICE_DATA item in invLineItem)
            {
                item.TotalAmountWithTax = item.TaxableAmount + item.IGSTAmt + item.CGSTAmt + item.SGSTAmt + item.UGSTAmt + item.CessAmt;
                item.CreatedDate        = DateTime.Now;
                unitOfWork.InvoiceDataRepository.Create(item);
            }

            unitOfWork.Save();

            //start- Mapp Regular and Jobwork Challan no.
            foreach (Int64 itm in seller.ChallanInvoiceIds)
            {
                GST_TRN_INVOICE_MAP map = new GST_TRN_INVOICE_MAP();
                map.MapfromInvoiceID = itm;
                map.MaptoInvoiceID   = invoiceCreate.InvoiceID;
                map.Status           = true;
                map.CreatedBy        = seller.CreatedBy;
                map.CreatedDate      = DateTime.Now;
                unitOfWork.InvoiceMapRepository.Create(map);
            }

            unitOfWork.Save();
            //end
            foreach (Int64 itm in seller.AdvanceInvoiceIds)
            {
                GST_TRN_INVOICE_MAP map = new GST_TRN_INVOICE_MAP();
                map.MapfromInvoiceID = itm;
                map.MaptoInvoiceID   = invoiceCreate.InvoiceID;
                map.Status           = true;
                map.CreatedBy        = seller.CreatedBy;
                map.CreatedDate      = DateTime.Now;
                unitOfWork.InvoiceMapRepository.Create(map);
            }
            unitOfWork.Save();

            cls_ITC itc = new cls_ITC();

            itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.TaxInvoice;
            itc.SaveItc(invoiceCreate);

            cls_PurchaseRegister purchaseRegister = new cls_PurchaseRegister();

            //var allitems = invLineItem.Select(s => s.Item_ID).Distinct();
            if (inv.InvoiceSpecialCondition == (byte)(EnumConstants.InvoiceSpecialCondition.Advance))
            {
                //No data will be save in sale and purchase.
            }
            else if (inv.InvoiceSpecialCondition != (byte)(EnumConstants.InvoiceSpecialCondition.Import))  //enumm
            {
                foreach (GST_TRN_INVOICE_DATA item in invLineItem)
                {
                    var itemType = unitOfWork.ItemRepository.Find(f => f.Item_ID == item.Item_ID).ItemType;
                    // var purchaseItems = unitOfWork.PurchaseDataRepositry.Filter(f => f.Status == true && item.Item_ID == f.Item_ID).Select(s => s.GST_MST_PURCHASE_REGISTER.UserID).ToList();
                    if (itemType == (byte)EnumConstants.ItemType.HSN)
                    {
                        string  uId     = seller.SellerUserID;
                        int     iTem    = Convert.ToInt32(item.Item_ID);
                        decimal LeftQty = purchaseRegister.GetLeftItemQty(iTem, uId);

                        if (LeftQty > item.Qty)
                        {
                            GST_MST_SALE_REGISTER salRegister = new GST_MST_SALE_REGISTER();
                            salRegister.InvoiceID   = invoiceCreate.InvoiceID;
                            salRegister.PerUnitRate = item.Rate;
                            salRegister.Item_ID     = item.Item_ID;
                            salRegister.Qty         = item.Qty;
                            salRegister.CreatedBy   = seller.CreatedBy;
                            salRegister.CreatedDate = DateTime.Now;
                            salRegister.Status      = true;
                            salRegister.Id          = uId;
                            salRegister.SaleStatus  = (byte)EnumConstants.SaleStatus.Fresh;
                            unitOfWork.SaleRegisterDataRepositry.Create(salRegister);
                            unitOfWork.Save();
                        }
                    }
                }
            }

            else
            {
                //Add stock in PURCHSE Reagister When item is import from seller..
                purchaseRegister.LoggedinUserID   = invoiceCreate.SellerUserID;
                purchaseRegister.SellerName       = seller.NameAsOnGST;
                purchaseRegister.SellerAddress    = seller.Address;
                purchaseRegister.SellerGSTN       = seller.GSTIN;
                purchaseRegister.ReceiverName     = seller.Reciever.NameAsOnGST;
                purchaseRegister.ReceiverAddress  = seller.Reciever.Address;
                purchaseRegister.ConsigneeName    = seller.Consignee.NameAsOnGST;
                purchaseRegister.ConsigneeAddress = seller.Consignee.Address;
                purchaseRegister.StateCode        = seller.SellerStateCode;

                purchaseRegister.SaveInvoiveDataInPurchaseRegister(inv);
            }

            if (inv.InvoiceSpecialCondition == (byte)(EnumConstants.InvoiceSpecialCondition.SupplierMissingInvoice))
            {
                GST_TRN_INVOICE_AUDIT_TRAIL IAT = new GST_TRN_INVOICE_AUDIT_TRAIL();

                IAT.InvoiceID        = invoiceCreate.InvoiceID;
                IAT.AuditTrailStatus = (byte)EnumConstants.InvoiceAuditTrailSatus.Import2A;
                IAT.InvoiceAction    = (byte)EnumConstants.InvoiceActionAuditTrail.Add;
                IAT.UserIP           = HelperUtility.IP;
                //IAT.SellerInvoiceAction = "" ;
                IAT.ReceiverInvoiceAction = (byte)EnumConstants.InvoiceActionAuditTrail.Add;
                // IAT.SellerInvoiceActionDate = DateTime.Now;
                IAT.ReceiverInvoiceActionDate = DateTime.Now;
                IAT.CreatedBy   = invoiceCreate.CreatedBy;
                IAT.CreatedDate = DateTime.Now;
                unitOfWork.InvoiceAuditTrailRepositry.Create(IAT);
                unitOfWork.Save();
            }
            //foreach (GST_TRN_INVOICE_DATA item in invLineItem)
            //{
            // itc.UserID = seller.Reciever.RecieveruserID;
            // itc.Amount = item.IGSTAmt + item.CGSTAmt + item.SGSTAmt + item.UGSTAmt + item.CessAmt;
            //itc.InvoiceID = invoiceCreate.InvoiceID;
            // itc.ITCStatus = (byte)(EnumConstants.ITCStatus.Active);
            // itc.ITCVoucherType = (byte)EnumConstants.ITCMovement.Credit;
            // itc.ITCDate = DateTime.Now;
            // itc.ITCMovement = (byte)(EnumConstants.InvoiceSpecialCondition.Import);
            //// itc.TaxType = item.UGSTAmt;
            // itc.IGST = item.IGSTAmt;
            // itc.CGST = item.CGSTAmt;
            // if (item.SGSTAmt != 0)
            // {
            // itc.SGST = item.SGSTAmt;
            // }
            // else
            // {
            //     itc.SGST = item.UGSTAmt;
            // }
            // itc.CreatedBy = seller.CreatedBy;
            // itc.CreatedDate = DateTime.Now;
            // unitOfWork.ITCRepository.Create(itc);
            // unitOfWork.Save();
            //}


            //User Current TurnOver
            GST_MST_USER_CURRENT_TURNOVER turnOver = new GST_MST_USER_CURRENT_TURNOVER();

            turnOver.User_ID                 = inv.SellerUserID;
            turnOver.Month                   = inv.InvoiceMonth;
            turnOver.InvoiceID               = invoiceCreate.InvoiceID;
            turnOver.InvoiceAmountWithTax    = invLineItem.Sum(s => s.TotalAmount);
            turnOver.InvoiceAmountWithoutTax = invLineItem.Sum(s => s.TaxableAmount);
            turnOver.TurnOverStatus          = 0;//TODO:Need to change
            turnOver.CreatedBy               = inv.CreatedBy;
            turnOver.CreatedDate             = DateTime.Now;
            turnOver.Status                  = true;
            unitOfWork.CurrentTurnoverRepositry.Create(turnOver);
            unitOfWork.Save();
            //// ExcelDB exceldb = new ExcelDB();
            ////result = exceldb.SaveInvoiceData(seller);

            //  }
            return(result);
        }
Example #2
0
        protected void lkbUpdateInvoice_Click(object sender, EventArgs e)
        {
            try
            {
                // GridView gv = (GridView)fvInvoice.FindControl("gvItems");
                List <GST_TRN_INVOICE_DATA> items = GetGVData();
                //var it = Invoice;
                if (Invoice != null)
                {
                    GST_TRN_INVOICE inv = new GST_TRN_INVOICE();


                    inv.InvoiceDate  = DateTime.Now;
                    inv.InvoiceMonth = Convert.ToByte(DateTime.Now.Month);
                    //var totalInv=unitOfWork.InvoiceRepository.Filter(f => f.SellerUserID == Invoice.AspNetUser.Id).Count();// is
                    //var CurrentSrlNo = totalInv + 1;
                    //if (Invoice.ParentInvoiceID == null)
                    //{
                    inv.InvoiceNo = Invoice.InvoiceNo;// UniqueNoGenerate.RandomValue();//InvoiceOperation.InvoiceNo(Invoice.AspNetUser, Invoice.FinYear_ID.ToString(), CurrentSrlNo.ToString());
                    // }
                    inv.SellerUserID               = Invoice.SellerUserID;
                    inv.ReceiverUserID             = Invoice.ReceiverUserID;
                    inv.ConsigneeUserID            = Invoice.ConsigneeUserID;
                    inv.OrderDate                  = Invoice.OrderDate;
                    inv.VendorID                   = Invoice.VendorID;
                    inv.TransShipment_ID           = Invoice.TransShipment_ID;
                    inv.Freight                    = Invoice.Freight;
                    inv.Insurance                  = Invoice.Insurance;
                    inv.PackingAndForwadingCharges = Invoice.PackingAndForwadingCharges;
                    inv.ElectronicReferenceNo      = Invoice.ElectronicReferenceNo;
                    inv.ElectronicReferenceNoDate  = Invoice.ElectronicReferenceNoDate;
                    inv.InvoiceType                = Invoice.InvoiceType;
                    inv.FinYear_ID                 = Invoice.FinYear_ID;
                    inv.IsInter                    = Invoice.IsInter;
                    inv.ReceiverFinYear_ID         = Invoice.ReceiverFinYear_ID;
                    //  inv.ParentInvoiceID = Invoice.InvoiceID;
                    inv.TaxBenefitingState = Invoice.AspNetUser2.StateCode;
                    inv.Status             = true;
                    //  var invoicePeriod=unitOfWork.FinYearRepository.Find(f=>f.Fin_ID== Invoice.FinYear_ID).Finyear_Format;

                    //  GST_TRN_INVOICE updateInvoice = new GST_TRN_INVOICE();

                    inv.InvoiceStatus           = Convert.ToByte(EnumConstants.InvoiceStatus.Fresh);
                    inv.InvoiceSpecialCondition = Invoice.InvoiceSpecialCondition;
                    inv.CreatedDate             = DateTime.Now;
                    inv.UpdatedDate             = DateTime.Now;
                    inv.CreatedBy = Common.LoggedInUserID();
                    inv.UpdatedBy = Common.LoggedInUserID();
                    cls_PurchaseRegister insertPurchaseRegsiter = new cls_PurchaseRegister();
                    insertPurchaseRegsiter.LoggedinUserID = Common.LoggedInUserID();



                    //-------------End--------
                    // bool isInter =InvoiceOperation.GetConsumptionDestinationOfGoodsOrServices(Invoice.AspNetUser.StateCode, Invoice.AspNetUser2.StateCode, Invoice.AspNetUser1.StateCode);
                    bool isInter         = Invoice.IsInter.Value;
                    bool isStateExampted = unitOfWork.StateRepository.Find(f => f.StateCode == Invoice.AspNetUser2.StateCode).IsExempted.Value;
                    // bool isExport = (Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.Export || Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.SEZDeveloper || Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.SEZUnit || Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.DeemedExport);

                    bool isExported = false;
                    if (Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.Export || (byte)Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.SEZDeveloper || Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.SEZUnit || Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.DeemedExport)
                    {
                        isExported = true;
                    }
                    bool isJobwork  = (Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.JobWork);
                    bool isImport   = (Invoice.InvoiceSpecialCondition == (byte)EnumConstants.InvoiceSpecialCondition.Import);
                    var  stateData  = unitOfWork.StateRepository.Find(c => c.StateCode == Invoice.AspNetUser.StateCode);
                    var  isUTState  = stateData.UT.Value;
                    var  isExempted = stateData.IsExempted.Value;
                    var  isEcom     = false;
                    var  isUn       = false;

                    var invLineItem = from invo in items
                                      select new GST_TRN_INVOICE_DATA
                    {
                        // InvoiceID = invoiceCreate.InvoiceID,
                        InvoiceDataID = invo.InvoiceDataID,
                        LineID        = invo.LineID,
                        // GST_MST_ITEM = invo.Item,
                        Item_ID       = invo.GST_MST_ITEM.Item_ID,
                        Qty           = invo.Qty,
                        Rate          = invo.Rate,
                        TotalAmount   = invo.TotalAmount,
                        Discount      = invo.Discount,
                        TaxableAmount = invo.TaxableAmount,
                        IGSTRate      = Calculate.TaxRate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.IGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.IGST.Value),              //isJobwork ? 0 : (isUTState ? 0 : (isInter ? invo.Item.IGST : (isExport ? invo.Item.IGST : (isImport ? invo.Item.IGST : 0)))),
                        IGSTAmt       = Calculate.TaxCalculate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.IGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.IGST.Value),         // isJobwork ? 0 : (isUTState ? 0 : (isInter ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : (isExport ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : (isImport ? Calculate.CalculateIGSTLineIDWise(invo.TaxableValueLineIDWise, invo.Item.IGST.Value) : 0)))),
                        CGSTRate      = Calculate.TaxRate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.CGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.CGST.Value),
                        CGSTAmt       = Calculate.TaxCalculate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.CGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.CGST.Value),
                        SGSTRate      = Calculate.TaxRate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.SGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.SGST.Value),
                        SGSTAmt       = Calculate.TaxCalculate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.SGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.SGST.Value),
                        UGSTRate      = Calculate.TaxRate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.UTGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.UGST.Value),
                        UGSTAmt       = Calculate.TaxCalculate(invo.GST_MST_ITEM, isInter, isExported, isImport, isUTState, isJobwork, isEcom, isUn, EnumConstants.TaxType.UTGST, invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.UGST.Value),
                        CessRate      = isJobwork ? 0 : invo.GST_MST_ITEM.CESS,
                        CessAmt       = isJobwork ? 0 : Calculate.CalculateCESSLineIDWise(invo.TaxableAmount.HasValue ? invo.TaxableAmount.Value : 0, invo.GST_MST_ITEM.CESS.Value)
                                        //TotalAmountWithTax = invo.TaxableAmount + IGSTAmt,
                    };

                    bool invoiceHasParent = Invoice.ParentInvoiceID != null ? true : false;

                    if (!invoiceHasParent)
                    {
                        //Update old invoice status that is A or M---------------Start-------------
                        if (Invoice.InvoiceMonth == (byte)DateTime.Now.Month)
                        {
                            var oldInvoice = unitOfWork.InvoiceRepository.Find(f => f.InvoiceID == Invoice.InvoiceID);
                            oldInvoice.InvoiceStatus = Convert.ToByte(EnumConstants.InvoiceStatus.Amended);
                            // Invoice.InvoiceID = updateInvoice.InvoiceID;
                            var invoiceUpdate = unitOfWork.InvoiceRepository.Update(oldInvoice);
                            unitOfWork.Save();
                        }
                        else
                        {
                            var oldInvoice = unitOfWork.InvoiceRepository.Find(f => f.InvoiceID == Invoice.InvoiceID);
                            oldInvoice.InvoiceStatus = Convert.ToByte(EnumConstants.InvoiceStatus.Modified);
                            //  updateInvoice.InvoiceID = updateInvoice.InvoiceID;
                            var invoiceUpdate = unitOfWork.InvoiceRepository.Update(oldInvoice);
                            unitOfWork.Save();
                        }

                        inv.ParentInvoiceID = Invoice.InvoiceID;
                        var invoiceCreate = unitOfWork.InvoiceRepository.Create(inv);
                        unitOfWork.Save();
                        foreach (GST_TRN_INVOICE_DATA item in invLineItem)
                        {
                            item.InvoiceID          = invoiceCreate.InvoiceID;
                            item.TotalAmountWithTax = item.TaxableAmount + item.IGSTAmt + item.CGSTAmt + item.SGSTAmt + item.UGSTAmt + item.CessAmt;
                            unitOfWork.InvoiceDataRepository.Create(item);
                        }
                        unitOfWork.Save();
                        invoiceItem.AutoCorrectInvoice(invoiceCreate.InvoiceID);


                        bool isSave = insertPurchaseRegsiter.UpdatePurchaseDataItemFromInvoice(inv);

                        GST_TRN_INVOICE_AUDIT_TRAIL auditStatus = new GST_TRN_INVOICE_AUDIT_TRAIL();
                        auditStatus.InvoiceID                 = invoiceCreate.InvoiceID;
                        auditStatus.AuditTrailStatus          = (byte)EnumConstants.InvoiceAuditTrailSatus.Import2A;
                        auditStatus.InvoiceAction             = (byte)EnumConstants.InvoiceActionAuditTrail.Modify;
                        auditStatus.ReceiverInvoiceAction     = (byte)EnumConstants.InvoiceActionAuditTrail.Modify;
                        auditStatus.ReceiverInvoiceActionDate = DateTime.Now;                        //
                        auditStatus.CreatedDate               = DateTime.Now;
                        auditStatus.CreatedBy                 = Common.LoggedInUserID();
                        unitOfWork.InvoiceAuditTrailRepositry.Create(auditStatus);
                        unitOfWork.Save();
                    }
                    else
                    {
                        foreach (GST_TRN_INVOICE_DATA item in invLineItem)
                        {
                            //  item.InvoiceDataID = invp

                            item.InvoiceID          = Invoice.InvoiceID;
                            item.TotalAmountWithTax = item.TaxableAmount + item.IGSTAmt + item.CGSTAmt + item.SGSTAmt + item.UGSTAmt + item.CessAmt;
                            item.CreatedDate        = DateTime.Now;
                            unitOfWork.InvoiceDataRepository.Update(item);
                        }
                        unitOfWork.Save();
                        invoiceItem.AutoCorrectInvoice(Invoice.InvoiceID);

                        bool isSave = insertPurchaseRegsiter.UpdatePurchaseDataItemFromInvoice(Invoice);
                    }

                    gvInvoice_Items.DataSource = null;
                    gvInvoice_Items.DataBind();
                    lkbUpdateInvoice.Visible = false;
                    Invoice = new GST_TRN_INVOICE();
                    uc_sucess.SuccessMessage = "Data updated successfully.";
                    if (!string.IsNullOrEmpty(EditFrom))
                    {
                        if (EditFrom == "GSTR2")
                        {
                            cls_ITC itc = new cls_ITC();
                            itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.Purchase;
                            itc.SaveItcReceiver(inv);
                        }
                    }
                    UpdateInvoiceClick(sender, e);
                }
            }

            catch (Exception ex)
            {
                cls_ErrorLog ob = new cls_ErrorLog();
                cls_ErrorLog.LogError(ex, Common.LoggedInUserID());
            }
        }
Example #3
0
        protected void lkb_Click(object sender, EventArgs e)
        {
            try
            {
                int        count = 0;
                LinkButton lkb   = (LinkButton)sender;
                foreach (ListViewDataItem item in lvInvoices.Items)
                {
                    string   auditTrailID = lvInvoices.DataKeys[item.DisplayIndex].Values["AuditTrailID"].ToString();
                    string   invoiceID    = lvInvoices.DataKeys[item.DisplayIndex].Values["InvoiceID"].ToString();
                    CheckBox chk          = (CheckBox)item.FindControl("chkSelect");
                    if (chk.Checked)
                    {
                        Int64 id = Convert.ToInt64(auditTrailID);
                        // int invoiceid = Convert.ToInt32(audittrail.InvoiceID);
                        var itemAudit = unitOfWork.InvoiceAuditTrailRepositry.Find(f => f.AuditTrailID == id);
                        itemAudit.InvoiceAction           = (byte)(EnumConstants.InvoiceActionAuditTrail)Enum.Parse(typeof(EnumConstants.InvoiceActionAuditTrail), lkb.CommandName);
                        itemAudit.SellerInvoiceAction     = (byte)(EnumConstants.InvoiceActionAuditTrail)Enum.Parse(typeof(EnumConstants.InvoiceActionAuditTrail), lkb.CommandName);
                        itemAudit.SellerInvoiceActionDate = DateTime.Now;
                        itemAudit.UpdatedDate             = DateTime.Now;
                        audittrail.InvoiceAction          = (byte)(EnumConstants.InvoiceActionAuditTrail)Enum.Parse(typeof(EnumConstants.InvoiceActionAuditTrail), lkb.CommandName);;
                        // itemAudit.InvoiceAction = (byte)EnumConstants.InvoiceActionAuditTrail.Accept;
                        itemAudit.UpdatedBy = Common.LoggedInUserID();
                        unitOfWork.InvoiceAuditTrailRepositry.Update(itemAudit);
                        unitOfWork.Save();

                        Int64 invoiceid = Convert.ToInt64(invoiceID);
                        var   invoice   = unitOfWork.InvoiceRepository.Filter(f => f.InvoiceID == invoiceid).FirstOrDefault();

                        if (itemAudit.ReceiverInvoiceAction == (byte)EnumConstants.InvoiceActionAuditTrail.Modify)
                        {
                            if (lkb.CommandName == "Accept")
                            {
                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSave = insertSaleRegsiter.SaleRegister(invoice);

                                cls_ITC itc = new cls_ITC();
                                itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.TaxInvoice;
                                itc.SaveItc(invoice);
                            }
                            else
                            {
                                //cls_CreditDebit_Note noteItem = new cls_CreditDebit_Note();
                                ////  EnumConstants.NoteType invAction = (EnumConstants.NoteType)Enum.Parse(typeof(EnumConstants.NoteType), ddlNoteType.SelectedValue.ToString());

                                //// noteItem.NoteType = (byte)invAction;
                                ////  noteItem.Description = txtDescription.Text.Trim();
                                //bool isSave = noteItem.SaveNote(invoice);

                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSaveSaleReg = insertSaleRegsiter.SaleRegister(invoice);
                            }
                        }
                        else if (itemAudit.ReceiverInvoiceAction == (byte)EnumConstants.InvoiceActionAuditTrail.Pending)
                        {
                            if (lkb.CommandName == "Accept")
                            {
                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSave = insertSaleRegsiter.SaleRegister(invoice);

                                cls_PurchaseRegister insertPurchaseRegsiter = new cls_PurchaseRegister();
                                insertPurchaseRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSavePurchaseReg = insertPurchaseRegsiter.SaveInvoiveDataInPurchaseRegister(invoice);

                                cls_ITC itc = new cls_ITC();
                                itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.TaxInvoice;
                                itc.SaveItc(invoice);
                            }
                            else
                            {
                                // cls_CreditDebit_Note noteItem = new cls_CreditDebit_Note();
                                ////  EnumConstants.NoteType invAction = (EnumConstants.NoteType)Enum.Parse(typeof(EnumConstants.NoteType), ddlNoteType.SelectedValue.ToString());

                                //// noteItem.NoteType = (byte)invAction;
                                ////  noteItem.Description = txtDescription.Text.Trim();
                                //bool isSave = noteItem.SaveNote(invoice);

                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSaveSaleReg = insertSaleRegsiter.SaleRegister(invoice);
                            }
                        }
                        else if (itemAudit.ReceiverInvoiceAction == (byte)EnumConstants.InvoiceActionAuditTrail.Add)
                        {
                            if (lkb.CommandName == "Accept")
                            {
                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSave = insertSaleRegsiter.SaleRegister(invoice);

                                cls_PurchaseRegister insertPurchaseRegsiter = new cls_PurchaseRegister();
                                insertPurchaseRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSavePurchaseReg = insertPurchaseRegsiter.SaveInvoiveDataInPurchaseRegister(invoice);

                                cls_ITC itc = new cls_ITC();
                                itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.TaxInvoice;
                                itc.SaveItc(invoice);
                            }
                            else
                            {
                                // cls_CreditDebit_Note noteItem = new cls_CreditDebit_Note();
                                ////  EnumConstants.NoteType invAction = (EnumConstants.NoteType)Enum.Parse(typeof(EnumConstants.NoteType), ddlNoteType.SelectedValue.ToString());

                                //// noteItem.NoteType = (byte)invAction;
                                ////  noteItem.Description = txtDescription.Text.Trim();
                                //bool isSave = noteItem.SaveNote(invoice);

                                cls_PurchaseRegister insertSaleRegsiter = new cls_PurchaseRegister();
                                insertSaleRegsiter.LoggedinUserID = Common.LoggedInUserID();
                                bool isSaveSaleReg = insertSaleRegsiter.SaleRegister(invoice);
                            }
                        }
                        count = count + 1;
                    }
                }
                if (count > 0)
                {
                    this.Master.SuccessMessage = count.ToString() + " Invoice " + lkb.CommandName + "ed successfully.";
                    // this.Master.SuccessMessage = "Data accepted successfully";
                    //uc_sucess.Visible = true;
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelSucessMessage", "$('#viewInvoiceModelSucessMessage').modal();", true);
                    //uc_sucess.SuccessMessage = "Data uploaded successfully.";
                }
                else
                {
                    this.Master.WarningMessage = "There is no data to " + lkb.CommandName;
                    //uc_sucess.Visible = true;
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelWarningMessage", "$('#viewInvoiceModelWarningMessage').modal();", true);
                }
            }
            catch (Exception ex)
            {
                cls_ErrorLog ob = new cls_ErrorLog();
                cls_ErrorLog.LogError(ex, Common.LoggedInUserID());
                this.Master.ErrorMessage = ex.Message;
                //uc_sucess.Visible = true;
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelErrorMessage", "$('#viewInvoiceModelErrorMessage').modal();", true);
                //uc_sucess.SuccessMessage = "Data uploaded successfully.";

                // BindAllInvoices();
            }
            BindViewInvoice(Convert.ToByte(uc_invoiceMonth.GetValue));
        }
Example #4
0
        // GST_TRN_INVOICE_AUDIT_TRAIL audittrail = new GST_TRN_INVOICE_AUDIT_TRAIL();
        protected void lkvGSTR2A_Click(object sender, EventArgs e)
        {
            try
            {
                var        loggedinUserId = Common.LoggedInUserID();
                LinkButton lkb            = (LinkButton)sender;
                if (lkb.CommandName == "Import")
                {
                    List <clsMessageAttribute> invAttributes = new List <clsMessageAttribute>();
                    List <string> mailsToList = new List <string>();
                    int           count       = 0;
                    foreach (ListViewDataItem item in lvInvoices.Items)
                    {
                        Int64    invoiceID = Convert.ToInt64(lvInvoices.DataKeys[item.DisplayIndex].Values["InvoiceID"].ToString());
                        CheckBox chk       = (CheckBox)item.FindControl("chkImport");
                        if (chk.Checked)
                        {
                            //amits start
                            clsMessageAttribute attribute = new clsMessageAttribute();
                            var    invoiceDetail          = unitOfWork.InvoiceRepository.Find(f => f.InvoiceID == invoiceID);
                            string invoiceNo = invoiceDetail.InvoiceNo;
                            //End


                            var filedItem = unitOfWork.InvoiceAuditTrailRepositry.Find(f => f.GST_TRN_INVOICE.ReceiverUserID == loggedinUserId &&
                                                                                       f.AuditTrailStatus == (byte)EnumConstants.InvoiceAuditTrailSatus.Import2A && f.InvoiceID == invoiceID && f.GST_TRN_INVOICE.Status == true);
                            if (filedItem == null)
                            {
                                audittrail.InvoiceID             = Convert.ToInt64(invoiceID);// item.InvoiceID;
                                audittrail.AuditTrailStatus      = Convert.ToByte(EnumConstants.InvoiceAuditTrailSatus.Import2A);
                                audittrail.UserIP                = Common.IP;
                                audittrail.InvoiceAction         = (byte)EnumConstants.InvoiceActionAuditTrail.NA;
                                audittrail.ReceiverInvoiceAction = (byte)EnumConstants.InvoiceActionAuditTrail.NA;
                                audittrail.SellerInvoiceAction   = (byte)EnumConstants.InvoiceActionAuditTrail.NA;
                                audittrail.CreatedDate           = DateTime.Now;
                                audittrail.CreatedBy             = loggedinUserId;
                                unitOfWork.InvoiceAuditTrailRepositry.Create(audittrail);
                                unitOfWork.Save();
                                //count = count + 1;
                                //amits start
                                count = count + 1;
                                if (!mailsToList.Contains(invoiceDetail.AspNetUser.Email))
                                {
                                    mailsToList.Add(invoiceDetail.AspNetUser.Email);
                                }
                                attribute.UserName = invoiceDetail.AspNetUser.OrganizationName;

                                //attribute.MailsTo.Add();
                                attribute.InvoiceNo          = invoiceNo;
                                attribute.InvoiceDate        = DateTimeAgo.GetFormatDate(invoiceDetail.InvoiceDate);
                                attribute.InvoiceTotalAmount = invoiceDetail.GST_TRN_INVOICE_DATA.Sum(s => s.TotalAmountWithTax).ToString();
                                invAttributes.Add(attribute);
                                //End
                            }
                            var invoice = unitOfWork.InvoiceRepository.Filter(f => f.InvoiceID == invoiceID).FirstOrDefault();
                            cls_PurchaseRegister insertPurchaseRegsiter = new cls_PurchaseRegister();
                            insertPurchaseRegsiter.LoggedinUserID = Common.LoggedInUserID();
                            bool    isSave = insertPurchaseRegsiter.SaveInvoiveDataInPurchaseRegister(invoice);
                            cls_ITC itc    = new cls_ITC();
                            itc.ITCVoucherType = (byte)EnumConstants.ITCVoucherType.Purchase;
                            itc.SaveItcReceiver(invoice);
                        }
                        else
                        {
                        }
                    }

                    if (count > 0)
                    {
                        string mailString            = string.Empty;
                        string sellerMail            = string.Empty;
                        clsMessageAttribute mailData = new clsMessageAttribute();

                        foreach (clsMessageAttribute iId in invAttributes)
                        {
                            mailString       += "<tr><td align='left' style='table-layout:auto'>" + iId.InvoiceNo.ToString() + "</td>";
                            mailString       += "<td align='middle' style='table-layout:auto'>" + iId.InvoiceDate.ToString() + "</td>";
                            mailString       += "<td align='right' style='table-layout:auto'>" + iId.InvoiceTotalAmount.ToString() + "</td></tr>";
                            mailData.UserName = iId.UserName;
                        }
                        this.Master.SuccessMessage = "Data imported successfully.";
                        SendHTMLMail(mailData, mailString, String.Join(";", mailsToList.ToArray()));
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelSucessMessage", "$('#viewInvoiceModelSucessMessage').modal();", true);
                        BindViewInvoice(Convert.ToByte(uc_invoiceMonth.GetValue));
                    }
                    //if (count > 0)
                    //{
                    //    this.Master.SuccessMessage = count.ToString() + " Invoice " + lkb.CommandName + "ed successfully.";
                    //    //uc_sucess.Visible = true;
                    //    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelSucessMessage", "$('#viewInvoiceModelSucessMessage').modal();", true);
                    //}
                    else
                    {
                        this.Master.WarningMessage = "There are no invoices to import.";
                        //uc_sucess.Visible = true;
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "viewInvoiceModelWarningMessage", "$('#viewInvoiceModelWarningMessage').modal();", true);
                    }
                }

                BindViewInvoice(Convert.ToByte(uc_invoiceMonth.GetValue));
            }
            catch (Exception ex)
            {
                cls_ErrorLog ob = new cls_ErrorLog();
                cls_ErrorLog.LogError(ex, Common.LoggedInUserID());
            }
        }