public InvoicePrint CreateInvoicePrint(int id = 0, int [] InvoiceIds = null) { var report = new InvoicePrint(); report.xrPictureBox1.BeforePrint += InvoicePrintPictureBox_BeforePrint; TenantConfig config = _tenantServices.GetTenantConfigById(CurrentTenantId); if (!config.ShowDecimalPoint) { report.lblQuantity.TextFormatString = "{0:0.##}"; report.xrLabel2.TextFormatString = "{0:0.##}"; } if (InvoiceIds == null) { int[] ids = new int[] { id }; report.invoiceMasterId.Value = ids; } else { report.invoiceMasterId.Value = InvoiceIds; } report.RequestParameters = false; return(report); }
public async Task <IActionResult> Result(int?id) { var invoicePrintModel = new InvoicePrint(); invoicePrintModel.Invoice = await _context.Invoice .Include(i => i.Payment) .Include(i => i.Job) .ThenInclude(i => i.Customer) .Include(i => i.InvoiceItem) .ThenInclude(i => i.Item) .ThenInclude(i => i.TestCompoent) .ToListAsync(); Invoice invoiceForCustomer = invoicePrintModel.Invoice.Where( i => i.InvocieID == id.Value).Single(); invoicePrintModel.Customer = invoiceForCustomer.Job.Customer; Invoice invoiceForPayment = invoicePrintModel.Invoice.Where( i => i.InvocieID == id.Value).Single(); invoicePrintModel.Payment = invoiceForPayment.Payment; Invoice invoiceForItem = invoicePrintModel.Invoice.Where( i => i.InvocieID == id.Value).Single(); invoicePrintModel.Item = invoiceForItem.InvoiceItem.Select(s => s.Item); return(View(invoicePrintModel)); }
public InvoicePrint getPrintBill(int orderMasterId) { SqlCommand dinsert = new SqlCommand("usp_GetBillPrint"); dinsert.Parameters.AddWithValue("@OrderMasterId", SqlDbType.Int).Value = orderMasterId; DataSet dtList = objcon.GetDsByCommand(dinsert); InvoicePrint list1 = new InvoicePrint(); foreach (DataRow dr in dtList.Tables[0].Rows) { //DomainDNS pd = new DomainDNS(); list1.ServiceProviderName = (dr["ServiceProviderName"].ToString()); list1.ServiceProviderMobileNo = dr["ServiceProviderMobileNo"].ToString(); list1.CompanyName = dr["CompanyName"].ToString(); list1.ServiceProviderRegNo = dr["ServiceProviderRegNo"].ToString(); list1.ServiceProviderGSTIN = dr["ServiceProviderGSTIN"].ToString(); list1.ServiceProviderEmail = dr["ServiceProviderEmail"].ToString(); list1.ServiceProviderAddress = dr["ServiceProviderAddress"].ToString(); list1.ServiceProviderCity = dr["ServiceProviderCity"].ToString(); list1.OrderId = dr["OrderMasterId"].ToString(); list1.OrderDate = dr["OrderDate"].ToString(); list1.CustomerId = dr["CustomerId"].ToString(); list1.CustomerName = dr["CustomerName"].ToString(); list1.CustomerMoNo = dr["CustomerMoNo"].ToString(); list1.CustomerEmail = dr["CustomerEmail"].ToString(); list1.CustomerAddress = dr["CustomerAddress"].ToString(); list1.CustomerCity = dr["CustomerCity"].ToString(); list1.CustomerPostalCode = dr["CustomerPostalCode"].ToString(); } foreach (DataRow dr in dtList.Tables[1].Rows) { Order list12 = new Order(); //DomainDNS pd = new DomainDNS(); list12.ProductName = (dr["ProductName"].ToString()); list12.Qty = "1";//dr["ServiceProviderMobileNo"].ToString(); list12.RatePerQty = dr["RatePerQty"].ToString(); list12.BasePrise = dr["BasePrise"].ToString(); list12.CGST = dr["CGST"].ToString(); list12.SGST = dr["SGST"].ToString(); list12.Price = dr["Price"].ToString(); list1.Productlst.Add(list12); } foreach (DataRow dr in dtList.Tables[2].Rows) { OrderMasterDetail list12 = new OrderMasterDetail(); //DomainDNS pd = new DomainDNS(); list12.Subtotal = (dr["BasePrise"].ToString()); list12.CGST = dr["CGST"].ToString(); list12.SGST = dr["SGST"].ToString(); list12.InvoiceTotal = dr["InvoiceTotal"].ToString(); list1.OrderDetail.Add(list12); } return(list1); }
public async Task <IActionResult> PrintPdf(int?id) { if (id is null) { return(NotFound()); } var master = await _context.InvoiceMaster .Include(a => a.Cliente) .Include(a => a.InvoiceDetalles) .FirstOrDefaultAsync(a => a.Id == id); if (master is null) { return(NotFound()); } var invoicePrint = new InvoicePrint(master); return(View(invoicePrint)); }
private void Save(bool print) { B_Print.Enabled = B_Save.Enabled = false; var notif = Notification.Create("Creating Invoices", "Gathering required information..", SlickControls.Enums.PromptIcons.Info, null).Show(Form); new Action(() => { var invs = new List <int>(); System.Threading.Thread.Sleep(1000); foreach (var cust in Customers.Where(x => x.NewCounter > x.CurrentCounter)) { notif.SetText(cust.ToString()); invs.Add(SqlHandler.SaveInvoice(new Invoice() { CustomerID = cust.ID, StartingCounter = cust.CurrentCounter, EndingCounter = cust.NewCounter, Date = new DateTime((int)DD_Year.SelectedItem, (int)DD_Month.SelectedItem, DateTime.Today.Day) })); System.Threading.Thread.Sleep(75); } notif.Close(); this.TryInvoke(() => { B_Print.Enabled = B_Save.Enabled = true; if (print) { InvoicePrint.Print(Form, SqlHandler.GetInvoicesPrint(invs.Select(x => new Invoice() { ID = x }))); } }); }).RunInBackground(); }
private static void FillInvoice(bool isWarranty, InvoicePrint invoicePrint, string invoiceNumber, InvoiceEx invoiceEx = null) { string[] currencyType = new string[2]; word = new WordService(fileName, false); try { word.FindReplace("[brokerName]", order.Auction.SupplierOrders[0].BrokerName); word.FindReplace("[brokerKbe]", order.Auction.SupplierOrders[0].BrokerKbe); word.FindReplace("[brokerBIN]", order.Auction.SupplierOrders[0].BrokerBIN); word.FindReplace("[brokerBankName]", order.Auction.SupplierOrders[0].BrokerBankName); word.FindReplace("[brokerBIK]", order.Auction.SupplierOrders[0].BrokerBIK); word.FindReplace("[payCode]", isWarranty ? "171" : "859"); word.FindReplace("[invoiceNumber]", invoiceNumber); word.FindReplace("[invoiceDate]", isWarranty ? DateTime.Now.ToShortDateString() : order.Auction.Date.ToShortDateString()); word.FindReplace("[supplierName]", order.Auction.SupplierOrders[0].BrokerName); word.FindReplace("[supplierBIN]", order.Auction.SupplierOrders[0].BrokerBIN); word.FindReplace("[supplierAddress]", order.Auction.SupplierOrders[0].BrokerAddress); word.FindReplace("[buyerName]", order.Auction.SupplierOrders[0].Name); word.FindReplace("[buyerBIN]", order.Auction.SupplierOrders[0].BIN); word.FindReplace("[buyerAddress]", order.Auction.SupplierOrders[0].Address); word.FindReplace("[contractNum]", "№" + order.Auction.SupplierOrders[0].ContractNum); word.FindReplace("[contractDate]", order.Auction.SupplierOrders[0].ContractDate.ToShortDateString()); word.SetCell(3, 2, 1, "1"); if (isWarranty) { word.SetCell(3, 2, 3, "Гарантийное обеспечение за участие в аукционе №" + order.Auction.Number + " от " + order.Auction.Date.ToShortDateString()); } else { word.SetCell(3, 2, 3, "Брокерские услуги за участие в аукционе №" + order.Auction.Number + " от " + order.Auction.Date.ToShortDateString()); } if (order.Auction.SiteId == 4) { word.AddTableRow(3); word.SetCell(3, 3, 1, "2"); word.SetCell(3, 3, 3, "Открытие и ведение счета на товарной бирже"); word.SetCell(3, 3, 4, "1"); word.SetCell(3, 3, 5, "шт."); word.SetCell(3, 3, 6, invoiceEx.Services[1].Price.ToString()); word.SetCell(3, 3, 7, invoiceEx.Services[1].Аmount.ToString()); } word.SetCell(3, 2, 6, invoicePrint.Price); word.SetCell(3, 2, 7, invoicePrint.Аmount); word.FindReplace("[count]", order.Auction.SiteId == 4 ? "2" : "1"); if (order.Auction.SiteId == 4) { if (order.Auction.SupplierOrders[0].BIN == "141040012412") { invoicePrint.Total = (invoiceEx.Services[0].Аmount + invoiceEx.Services[1].Аmount).ToString(); } else { invoicePrint.Total = (invoiceEx.Services[0].Аmount + invoiceEx.Services[1].Аmount).ToString() + ",00"; } if (order.Auction.SupplierOrders[0].BrokerName.ToUpper().Contains("АЛТЫН")) { invoicePrint.TotalTax = ""; } else { invoicePrint.TotalTax = ((invoiceEx.Services[0].Аmount + invoiceEx.Services[1].Аmount) * 12 / 112).ToString(); } } word.FindReplace("[invoiceSum]", invoicePrint.Total); word.FindReplace("[ndsSum]", invoicePrint.TotalTax); word.FindReplace("[invoiceSum]", invoicePrint.Total); if (invoicePrint.АmountInWords.Contains("тиын")) { word.FindReplace("[currency]", "KZT"); currencyType[0] = " тенге"; currencyType[1] = " тиын"; if (order.Auction.SupplierOrders[0].BrokerName.ToUpper().Contains("КОРУНД")) { word.FindReplace("[brokerIIK]", order.Auction.SupplierOrders[0].BrokerIIK); } else { word.FindReplace("[brokerIIK]", order.Auction.SupplierOrders[0].BrokerIIK); } } else if (invoicePrint.АmountInWords.Contains("копеек")) { word.FindReplace("[currency]", "RUB"); currencyType[0] = " рублей"; currencyType[1] = " копеек"; if (order.Auction.SupplierOrders[0].BrokerName.ToUpper().Contains("КОРУНД")) { word.FindReplace("[brokerIIK]", "KZ739261802171874002"); } else { word.FindReplace("[brokerIIK]", order.Auction.SupplierOrders[0].BrokerIIK); } } else if (invoicePrint.АmountInWords.Contains("центов")) { word.FindReplace("[currency]", "USD"); currencyType[0] = " долларов"; currencyType[1] = " центов"; if (order.Auction.SupplierOrders[0].BrokerName.ToUpper().Contains("КОРУНД")) { word.FindReplace("[brokerIIK]", "KZ039261802171874001"); } else { word.FindReplace("[brokerIIK]", order.Auction.SupplierOrders[0].BrokerIIK); } } if (order.Auction.SiteId == 4) { invoicePrint.АmountInWords = "Всего к оплате: " + ConvertNumberToWord(Convert.ToInt32(invoiceEx.Services[0].Аmount + invoiceEx.Services[1].Аmount)) + currencyType[0] + ",00" + currencyType[1]; } word.FindReplace("[amountInWords]", invoicePrint.АmountInWords); } catch (Exception ex) { Debug.WriteLine("Err:" + ex); } word.SaveAsPDF(fileName); word.CloseDocument(true); word.CloseWord(true); }
private InvoicePrint GetInvoicePrint() { var fakeInvoice = new InvoicePrint { InvoiceSetting = new InvoiceSetting(), Orgnization = new Orgnization { Name = "Raj Cola Pvt Ltd", Address = "Shop no f-14, Gayatri complex, street no 3, Samastiput Bajar, Bihar, 110091", ID = Guid.NewGuid(), MobileNumber = "8800282570", Status = "Active", Email = "*****@*****.**", GST = "GSTNUMBER12121210", }, Customer = new Customer { Address = Faker.Address.StreetAddress(), ID = Guid.NewGuid(), MobileNo = Faker.Phone.Number(), Name = Faker.Name.FullName(), Status = "Active" }, Invoice = new Invoice { CustomerID = Guid.NewGuid(), DiscountCode = Guid.NewGuid(), DiscountCodeAmount = 20, ID = Guid.NewGuid(), Number = "INVORDERNO1", PaidAmount = 5000, TotalAmount = 5000, TotalDiscount = 20, Date = DateTime.Now }, User = new User { Address = Faker.Address.StreetAddress(), ID = Guid.NewGuid(), MobileNo = Faker.Phone.Number(), Name = Faker.Name.FullName(), Status = "Active" }, InvoiceProducts = new List <InvoiceProduct> { new InvoiceProduct { Discount = 0, ProductID = Guid.NewGuid(), ProductName = "ProductName - aa", ProductCode = "Code -" + Faker.RandomNumber.Next(), Mrp = 200.523m, Quantity = 5 } }, }; for (int i = 0; i < 4; i++) { fakeInvoice.InvoiceProducts.Add(new InvoiceProduct { Discount = 5 + i, ProductID = Guid.NewGuid(), ProductName = "ProductName - " + i, ProductCode = "Code -" + i, Mrp = 200, Quantity = 5 } ); } return(fakeInvoice); }
public async Task <IActionResult> Index([FromBody] CreditNote creditNote) { if (ModelState.IsValid) { try { Store store = JsonConvert.DeserializeObject <Store>(HttpContext.Session.GetString("Store"));; creditNote.Id = Guid.NewGuid(); creditNote.Credit_Note_Id = _context.CreditNote.Select(x => x.Credit_Note_Id).DefaultIfEmpty(0).Max() + 1; creditNote.Credit_Note_Number = "CN-" + creditNote.Credit_Note_Id.ToString("0000") + "-" + store.INITIAL + '-' + store.FISCAL_YEAR; creditNote.Trans_Time = DateTime.Now.TimeOfDay; creditNote.Division = "Divisioin"; creditNote.Terminal = HttpContext.Session.GetString("Terminal"); creditNote.Created_Date = DateTime.Now; creditNote.Created_By = User.Identity.Name; creditNote.isRedeem = creditNote.isRedeem; if (creditNote.isRedeem == true) { creditNote.Remarks = "Claimed"; } _context.Add(creditNote); foreach (var item in creditNote.CreditNoteItems) { item.Credit_Note_Id = creditNote.Id; item.Credit_Note_Number = creditNote.Credit_Note_Number; _context.CreditNoteItem.Add(item); } //save to print table InvoicePrint print = new InvoicePrint() { InvoiceNumber = creditNote.Credit_Note_Number, Type = "CreditNote", FirstPrintedDate = DateTime.Now, FirstPrintedBy = User.Identity.Name, PrintCount = 1 }; _context.InvoicePrint.Add(print); await _context.SaveChangesAsync(); //now update invoice remarks also SalesInvoice invoice = _context.SalesInvoice.FirstOrDefault(x => x.Invoice_Number == creditNote.Reference_Number.Trim()); invoice.Remarks = "Return"; _context.Entry(invoice).State = EntityState.Modified; InvoiceMaterializedView invoiceMaterializedViewOld = _context.InvoiceMaterializedView.FirstOrDefault(x => x.BillNo == creditNote.Reference_Number.Trim()); invoiceMaterializedViewOld.IsBillActive = false; _context.Entry(invoiceMaterializedViewOld).State = EntityState.Modified; InvoiceMaterializedView view = new InvoiceMaterializedView() { BillNo = creditNote.Credit_Note_Number, DocumentType = "Credit Memo", FiscalYear = store.FISCAL_YEAR, LocationCode = store.INITIAL, BillDate = creditNote.Trans_Date_Ad.Value, PostingTime = creditNote.Trans_Time.Value, CustomerCode = creditNote.Customer_Id, CustomerName = creditNote.Customer_Name, Vatno = creditNote.Customer_Vat, Amount = creditNote.Total_Gross_Amount.Value, Discount = creditNote.Total_Discount.Value, TaxableAmount = creditNote.TaxableAmount, NonTaxableAmount = creditNote.NonTaxableAmount, TaxAmount = creditNote.Total_Vat == null ? 0 : creditNote.Total_Vat.Value, TotalAmount = creditNote.Total_Net_Amount.Value, IsBillActive = true, IsBillPrinted = false, PrintedTime = DateTime.Now, PrintedBy = "", EnteredBy = creditNote.Created_By, SyncStatus = "Not Started", SyncedDate = DateTime.Now, SyncedTime = DateTime.Now.TimeOfDay, SyncWithIrd = false, IsRealTime = false }; InvoiceMaterializedView invoiceMaterializedView = _context.InvoiceMaterializedView.FirstOrDefault(x => x.BillNo == creditNote.Reference_Number.Trim()); invoiceMaterializedView.IsBillActive = false; _context.Entry(invoiceMaterializedView).State = EntityState.Modified; NavCreditMemo navCreditMemo = new NavCreditMemo() { id = creditNote.Id.ToString(), number = creditNote.Credit_Note_Number, postingno = creditNote.Credit_Note_Number, creditMemoDate = creditNote.Trans_Date_Ad.Value.ToString("yyyy-MM-dd"), customerNumber = creditNote.MemberId, customerName = creditNote.Customer_Name, vatregistrationnumber = creditNote.Customer_Vat, locationcode = store.INITIAL, accountabilitycenter = store.INITIAL, assigneduserid = creditNote.Created_By, externalDocumentNumber = creditNote.Reference_Number, amountrounded = creditNote.IsRoundup, returnremarks = creditNote.Credit_Note }; _context.InvoiceMaterializedView.Add(view); _context.SaveChanges(); //post to ird //background task BackgroundJob.Enqueue(() => SendDataToIRD(creditNote, store)); //Send data to NAV Config config = ConfigJSON.Read(); if (!config.StopCreditNotePosting) { NavPostData navPostData = new NavPostData(_context, _mapper); BackgroundJob.Enqueue(() => navPostData.PostCreditNote(navCreditMemo)); } //for api return TempData["StatusMessage"] = "Credit Note Added Successfully"; return(Ok(new { redirectUrl = "/CreditNote", Message = "Credit Note Added Successfully", InvoiceData = creditNote, StoreData = store })); } catch (Exception ex) { if (ex.Message.Contains("UniqueCreditNoteNumber") || ex.InnerException.Message.Contains("UniqueCreditNoteNumber")) { return(await Index(creditNote)); } } } return(View(creditNote)); }
public void Execute(IJobExecutionContext context) { DateTime today = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0); bool has_send; string send_cards_str = ""; using (DataContext _db = new DataContext()) { var _params = _db.Params.ToList(); int budget_invoice_invoice_day = int.Parse(_params.First(c => c.Name == "BudgetAbonentInvoiceDay").Value); int[] invoice_send_intervals = _params.Where(c => c.Name == "InvoiceSendIntervals").Select(c => c.Value).First().Split(';').Select(c => int.Parse(c)).ToArray(); string system_email = _params.First(p => p.Name == "SystemEmail").Value; string system_email_password = _params.First(p => p.Name == "SystemEmailPassword").Value; string invoice_text = _params.First(p => p.Name == "InvoiceText").Value; var abonents = _db.Customers.Where(c => c.Type == Models.CustomerType.Juridical) .Where(c => c.Cards.Any(cc => cc.AutoInvoice && cc.CardStatus == CardStatus.Active)).Select(c => new { AbonentName = c.Name, AbonentCode = c.Code, AbonentAddress = c.City + ", " + c.Address, AbonentPhone = c.Phone1, AbonentEmail = c.Email, IsBudget = c.IsBudget, Id = c.Id, Cards = c.Cards.Where(cc => cc.AutoInvoice).Select(cc => new { FinishDate = cc.FinishDate, AbonentNum = cc.AbonentNum, Id = cc.Id, Amount = cc.Subscribtions.FirstOrDefault(s => s.Status).Amount }).ToList() }).ToList(); InvoicePdf _invoice = new InvoicePdf(); List <LoggingItem> logging_items = new List <LoggingItem>(); foreach (var abonent in abonents) { InvoicePrint _invoicePrint = new InvoicePrint { AbonentAddress = abonent.AbonentAddress, AbonentCode = abonent.AbonentCode, AbonentEmail = abonent.AbonentEmail, AbonentName = abonent.AbonentName, AbonentPhone = abonent.AbonentPhone, AbonentId = abonent.Id, StartDate = today, EndDate = today.AddMonths(1), Items = new List <InvoicePrintItem>() }; has_send = false; if (abonent.IsBudget) { if (today.Day == budget_invoice_invoice_day) { int[] ids = abonent.Cards.Select(c => c.Id).ToArray(); _invoicePrint.Items.Add(new InvoicePrintItem { Amount = abonent.Cards.Sum(c => c.Amount), Name = "სააბონენტო გადასახადი - " + String.Join(",", abonent.Cards.Select(c => c.AbonentNum)) }); _invoicePrint.Items.Add(new InvoicePrintItem { Amount = (double)(_db.CardServices.Where(c => ids.Contains(c.CardId)).Where(c => c.IsActive).Sum(c => (decimal?)c.Amount) ?? 0), Name = "გაწეული მომსახურება" }); has_send = true; send_cards_str = String.Join(",", abonent.Cards.Select(c => c.AbonentNum)); } } else { var send_cards = abonent.Cards.Where(c => invoice_send_intervals.Contains((c.FinishDate - today).Days)).ToList(); if (send_cards.Count > 0) { int[] ids = send_cards.Select(c => c.Id).ToArray(); _invoicePrint.Items.Add(new InvoicePrintItem { Amount = send_cards.Sum(c => c.Amount), Name = "სააბონენტო გადასახადი - " + String.Join(",", send_cards.Select(c => c.AbonentNum)) }); _invoicePrint.Items.Add(new InvoicePrintItem { Amount = (double)(_db.CardServices.Where(c => ids.Contains(c.CardId)).Where(c => c.IsActive).Sum(c => (decimal?)c.Amount) ?? 0), Name = "გაწეული მომსახურება" }); has_send = true; send_cards_str = String.Join(",", send_cards.Select(c => c.AbonentNum)); } } if (has_send) { Invoice last_inv = _db.Invoices.OrderByDescending(c => c.Id).FirstOrDefault(); _invoicePrint.Num = last_inv == null?Utils.Utils.GetInvoiceNum("I0", DateTime.Now.Year) : Utils.Utils.GetInvoiceNum(last_inv.Num, last_inv.Tdate.Year); _invoice.InvoiceData = _invoicePrint; string file_short_name = ""; string file_name = new InvoicePdf() { InvoiceData = _invoicePrint }.Generate(); if (file_name == string.Empty) { _db.ChargeCrushLogs.Add(new ChargeCrushLog { Date = today, CardNum = abonent.AbonentName, ChargeCrushLogType = Models.ChargeCrushLogType.InvoiceNotSend, Text = "აბონენტი: " + abonent.AbonentName + ";" + abonent.AbonentEmail }); continue; } bool res = Utils.Utils.SendEmail(new List <string>() { file_name }, "GlobalTV ინვოისი", "mail." + system_email.Split('@')[1], 25, false, system_email, system_email.Split('@')[0], system_email_password, new List <string>() { _invoicePrint.AbonentEmail }, new List <string>(), invoice_text); if (!res) { _db.ChargeCrushLogs.Add(new ChargeCrushLog { Date = today, CardNum = abonent.AbonentName, ChargeCrushLogType = Models.ChargeCrushLogType.InvoiceNotSend, Text = "აბონენტი: " + abonent.AbonentName + ";" + abonent.AbonentEmail }); System.IO.File.Delete(file_name); continue; } file_short_name = file_name.Substring(file_name.LastIndexOf('\\') + 1); try { FileInfo fi = new System.IO.FileInfo(file_name); Stream fs = fi.OpenRead(); Utils.Utils.UploadFile(fs, _params.First(p => p.Name == "FTPHost").Value + "invoce/", _params.First(p => p.Name == "FTPLogin").Value, _params.First(p => p.Name == "FTPPassword").Value, file_short_name); fs.Close(); } catch (Exception ex) { _db.ChargeCrushLogs.Add(new ChargeCrushLog { Date = today, CardNum = abonent.AbonentName, ChargeCrushLogType = Models.ChargeCrushLogType.InvoiceNotSend, Text = "აბონენტი: " + abonent.AbonentName + ";" + abonent.AbonentEmail }); continue; } finally { System.IO.File.Delete(file_name); } Invoice _inv = new Invoice { CustomerId = _invoicePrint.AbonentId, Num = _invoicePrint.Num, Tdate = DateTime.Now, FileName = file_short_name, AbonentNums = send_cards_str }; _db.Invoices.Add(_inv); logging_items.Add(new LoggingItem { ColumnDisplay = "ინვოისი", OldValue = abonent.AbonentName, NewValue = abonent.AbonentCode }); } } this.AddLoging(_db, LogType.Invoice, LogMode.Add, 1, 0, "ავტომატური ინვოისი", logging_items); _db.SaveChanges(); } }
private void B_Print_Click(object sender, EventArgs e) { InvoicePrint.Print(Form, SqlHandler.GetInvoicesPrint(GetInvoices())); }
public IActionResult Billing([FromBody] SalesInvoiceBillingViewModel model) { try { //check if billing is not available if (model == null || model.bill.Count() == 0) { return(NotFound()); } //Check from salesInvoiceTmp table SalesInvoiceTmp salesInvoiceTmp = _context.SalesInvoiceTmp.FirstOrDefault(x => x.Id == model.salesInvoiceId); if (salesInvoiceTmp == null) { return(NotFound()); } using (var trans = _context.Database.BeginTransaction()) { SalesInvoice salesInvoice = new SalesInvoice(); try { //get store info Store store = JsonConvert.DeserializeObject <Store>(HttpContext.Session.GetString("Store")); //convert to sales invoice and save //if (_context.ChangeTracker.HasChanges(.Any(x => x.Id == model.salesInvoiceId)) // salesInvoice = _context.SalesInvoice.FirstOrDefault(x => x.Id == model.salesInvoiceId); //else salesInvoice = _mapper.Map <SalesInvoice>(salesInvoiceTmp); salesInvoice.Id = Guid.NewGuid(); salesInvoice.Total_Bill_Discount = model.billDiscount; salesInvoice.Total_Payable_Amount = model.totalPayable; salesInvoice.Total_Net_Amount_Roundup = model.totalNetAmountRoundUp; salesInvoice.Tender_Amount = model.tenderAmount; salesInvoice.Change_Amount = model.changeAmount; salesInvoice.Invoice_Id = _context.SalesInvoice.Where(x => x.Trans_Type == salesInvoice.Trans_Type).Select(x => x.Invoice_Id).DefaultIfEmpty(0).Max() + 1; salesInvoice.Invoice_Number = SalesInvoiceNumberFormat(store, salesInvoice.Invoice_Id, salesInvoice.Trans_Type); _context.SalesInvoice.Add(salesInvoice); //get invoice items temp convert to sales invoice item and save them IList <SalesInvoiceItemsTmp> itemtmp = _context.SalesInvoiceItemsTmp.Where(x => x.Invoice_Id == salesInvoiceTmp.Id).ToList(); foreach (var item in itemtmp) { item.Invoice = null; SalesInvoiceItems salesItem = _mapper.Map <SalesInvoiceItems>(item); salesItem.Id = 0; salesItem.Invoice_Id = salesInvoice.Id; salesItem.Invoice_Number = salesInvoice.Invoice_Number; _context.SalesInvoiceItems.Add(salesItem); } _context.SaveChanges(); //check session Settlement oldSettlement = _context.Settlement.FirstOrDefault(x => x.UserId == salesInvoice.Created_By && x.Status == "Open"); string sessionId = oldSettlement != null ? oldSettlement.SessionId : Guid.NewGuid().ToString(); string crNumber = salesInvoice.Invoice_Number; //save bill amount information foreach (var item in model.bill) { item.Invoice_Id = salesInvoice.Id; item.Invoice_Number = salesInvoice.Invoice_Number; item.Invoice_Type = salesInvoice.Trans_Type; item.Terminal = HttpContext.Session.GetString("Terminal"); if (item.Trans_Mode == "Cash") { item.Amount = item.Amount - salesInvoice.Change_Amount; } item.IsNavSync = false; _context.SalesInvoiceBill.Add(item); //if credit note amount is used then update credit note table if (item.Trans_Mode == "Credit Note") { CreditNote creditNote = _context.CreditNote.FirstOrDefault(x => x.Credit_Note_Number == item.Account); crNumber = item.Account; if (creditNote != null) { creditNote.Created_By = User.Identity.Name; creditNote.Created_Date = DateTime.Now; creditNote.Remarks = "Claimed"; _context.Entry(creditNote).State = EntityState.Modified; } } //save to settlement table decimal totalAmount = 0; if (item.Trans_Mode == "Cash") { totalAmount = item.Amount; } else { totalAmount = item.Amount; } Settlement settlement = new Settlement() { SessionId = sessionId, TransactionDate = DateTime.Now, PaymentMode = item.Trans_Mode, Amount = item.Amount, Status = "Open", VerifiedBy = "", VerifiedDate = DateTime.Now, TransactionNumber = salesInvoice.Invoice_Number, Remarks = "", TerminalId = Convert.ToInt32(HttpContext.Session.GetString("TerminalId")), UserId = salesInvoice.Created_By }; _context.Settlement.Add(settlement); } //save to print table InvoicePrint print = new InvoicePrint() { InvoiceNumber = salesInvoice.Invoice_Number, Type = salesInvoice.Trans_Type, FirstPrintedDate = DateTime.Now, FirstPrintedBy = User.Identity.Name, PrintCount = 1 }; _context.InvoicePrint.Add(print); _context.SaveChanges(); //if everything seems good, then delete salesInvoiceTmp _context.Remove(salesInvoiceTmp); //total amount excludevat decimal totalRateExcludeVat = 0; foreach (var i in salesInvoice.SalesInvoiceItems) { totalRateExcludeVat += i.RateExcludeVat * i.Quantity.Value; } // salesInvoice.SalesInvoiceItems.Select(x => x.RateExcludeVat).Sum(); //save to invoiceMaterialview InvoiceMaterializedView view = new InvoiceMaterializedView() { BillNo = salesInvoice.Invoice_Number, DocumentType = salesInvoice.Trans_Type + " Invoice", FiscalYear = store.FISCAL_YEAR, LocationCode = store.INITIAL, BillDate = salesInvoice.Trans_Date_Ad.Value, PostingTime = salesInvoice.Trans_Time.Value, CustomerCode = salesInvoice.Customer_Id, CustomerName = salesInvoice.Customer_Name, Vatno = salesInvoice.Customer_Vat, Amount = totalRateExcludeVat, Discount = salesInvoice.TOTAL_DISCOUNT_EXC_VAT, TaxableAmount = salesInvoice.TaxableAmount, NonTaxableAmount = salesInvoice.NonTaxableAmount, TaxAmount = salesInvoice.Total_Vat.Value, TotalAmount = salesInvoice.Total_Net_Amount.Value, IsBillActive = true, IsBillPrinted = true, PrintedBy = User.Identity.Name, PrintedTime = DateTime.Now, EnteredBy = salesInvoice.Created_By, SyncStatus = "Not Started", SyncedDate = DateTime.Now, SyncedTime = DateTime.Now.TimeOfDay, SyncWithIrd = false, IsRealTime = false }; NavSalesInvoice navSalesInvoice = new NavSalesInvoice() { id = salesInvoice.Id.ToString(), number = salesInvoice.Invoice_Number, postingno = salesInvoice.Invoice_Number, shippingno = salesInvoice.Invoice_Number, orderDate = salesInvoice.Trans_Date_Ad.Value.ToString("yyyy-MM-dd"), customerNumber = salesInvoice.MemberId, customerName = salesInvoice.Customer_Name, vatregistrationnumber = salesInvoice.Customer_Vat, locationcode = store.INITIAL, accountabilitycenter = store.INITIAL, assigneduserid = salesInvoice.Created_By, externalDocumentNumber = crNumber, amountrounded = salesInvoice.Total_Net_Amount != salesInvoice.Total_Payable_Amount }; _context.InvoiceMaterializedView.Add(view); _context.SaveChanges(); trans.Commit(); //*********** background task Config config = ConfigJSON.Read(); //Send data to IRD if (!config.StopPostingIRD) { BackgroundJob.Enqueue(() => SendDataToIRD(salesInvoice, store)); } //Send data to NAV if (!config.StopInvoicePosting) { NavPostData navPostData = new NavPostData(_context, _mapper); BackgroundJob.Enqueue(() => navPostData.PostSalesInvoice(navSalesInvoice)); } //TempData["StatusMessage"] = "Bill Payment Successfull !!"; return(Ok(new { StatusMessage = "Bill Payment Successfull !!", InvoiceData = salesInvoice, StoreData = store, BillData = model.bill })); } catch (Exception ex) { trans.Rollback(); if (ex.Message.Contains("UniqueInvoiceNumber") || ex.InnerException.Message.Contains("UniqueInvoiceNumber")) { _context.Entry(salesInvoice).State = EntityState.Detached; return(Billing(model)); } else { return(BadRequest(ex.Message)); } } }; } catch (Exception ex) { return(BadRequest(ex.Message)); } }