Exemple #1
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());
            }
        }
Exemple #2
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());
            }
        }