public void CreateNewInvoice() { bool Success = false; // start transaction using (TransactionScope TS = new TransactionScope()) { try { Invoice inv = new Invoice(); ControlObjectContext.AddToInvoiceSet(inv); foreach (GridViewRow gvr in GridViewSelectedRentOuts.Rows) { if ((gvr.Cells[0].Controls[1] as CheckBox).Checked) { String RentID = (gvr.Cells[0].Controls[1] as CheckBox).ToolTip; RentalItemActivity ria = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RentalItemActivitySet", "Id", new System.Guid(RentID))) as RentalItemActivity; ria.AddRentToInvoice(ControlObjectContext, inv); inv.Location = ria.RentLedger.Location; } } inv.GenerateInvoiceNumber(ControlObjectContext); inv.Relation = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RelationSet", "Id", Guid.Parse(DropDownListCustomers.SelectedValue))) as Relation; inv.Description = TextBoxDescription.Text; inv.InvoiceType = "Sell"; inv.InvoiceSubType = "Rent"; inv.BookingDateTime = Common.CurrentClientDateTime(Session); inv.Ledger = inv.Location.BankLedger; try { inv.DiscountPercentage = Convert.ToDouble("0" + TextBoxInvoiceDiscount.Text); } catch {} // add bail to the invoice double Bail = Convert.ToDouble(TextBoxBail.Text); // except if this fails, this should be a valid number if (Bail != 0) { InvoiceLine iline = new InvoiceLine(); iline.Description = "Borg"; iline.OriginalPrice = -Bail; iline.AllowDiscount = false; iline.VATPercentage = 0; iline.VATPrice = 0; iline.TotalPrice = -Bail; iline.Invoice = inv; iline.LineNumber = iline.Invoice.InvoiceLine.Count; iline.LedgerBookingCode = iline.Invoice.Location.DefaultBailPriceBookingCode; } LabelGeneratedInvoiceNr.Text = inv.InvoiceNumber.ToString(); LabelGeneratedInvoiceId.Text = inv.Id.ToString(); if (LabelGroupId.Text == "") { LabelGroupId.Text = inv.GroupCode.ToString(); } inv.GroupCode = new Guid(LabelGroupId.Text); inv.InvoiceNote = TextBoxInvoiceNote.Text; // all invoice lines to the same ledger inv.AllInvoiceLinesToSameLedger(inv.Ledger); inv.RecalcTotals(); // save the data ControlObjectContext.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); // commit the transaciton TS.Complete(); Success = true; } catch (Exception ex) { // rollback transaction TS.Dispose(); // inform user Common.InformUserOnTransactionFail(ex, Page); } } if (!Success) { CurrentPageNr--; EnableCurrentPageElements(); } }
public void CreateNewInvoice(ModelTMSContainer ControlObjectContext) { LabelInvoiceId.Text = ""; if ((CheckBoxInvoice.Visible && CheckBoxInvoice.Checked) || (CheckBoxBailReturn.Visible && CheckBoxBailReturn.Checked)) { Invoice inv = new Invoice(); ControlObjectContext.InvoiceSet.AddObject(inv); Guid Temp; inv.Relation = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RelationSet", "Id", Guid.Parse(DropDownListCustomers.SelectedValue))) as Relation; inv.Ledger = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.LedgerSet", "Id", Guid.Parse(ComboBoxLedger.SelectedValue))) as Ledger; // determine location inv.Location = GetFirstLocation(ControlObjectContext); inv.Description = "Verhuurfactuur dd " + Common.CurrentClientDateTime(Session).ToString(); inv.InvoiceType = "Sell"; inv.InvoiceSubType = "Rent"; inv.BookingDateTime = Common.CurrentClientDateTime(Session); if (LabelGroupId.Text == "") { LabelGroupId.Text = Guid.NewGuid().ToString(); } inv.GroupCode = new Guid(LabelGroupId.Text); inv.DiscountPercentage = Convert.ToDouble("0" + TextBoxDiscount.Text); if ((CheckBoxInvoice.Visible && CheckBoxInvoice.Checked)) { // invoice rental item activities foreach (GridViewRow gvr in GridViewRentedOutMaterials.Rows) { Temp = new Guid((gvr.Cells[0].Controls[1] as CheckBox).ToolTip); // get the corresponding RentalItemActivitySet // RentalItemActivity ria = ControlObjectContext.RentalItemActivitySet.Where(m => m.Id == Temp).First<RentalItemActivity>(); RentalItemActivity ria = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RentalItemActivitySet", "Id", Temp)) as RentalItemActivity; if ((CheckBoxInvoice.Visible && CheckBoxInvoice.Checked) && (ria.InvoiceLine == null)) { ria.AddRentToInvoice(ControlObjectContext, inv); } if (!ria.RentLedger.Invoice.Contains(inv)) { ria.RentLedger.Invoice.Add(inv); } } } // add bail to invoice if required if (CheckBoxBailReturn.Visible && CheckBoxBailReturn.Checked && (TextBoxBail.Text.Trim() != "0")) { // add bail to the invoice double Bail = Convert.ToDouble(TextBoxBail.Text); // except if this fails, this should be a valid number if (Bail != 0) { InvoiceLine iline = new InvoiceLine(); iline.Description = "Borg"; iline.OriginalPrice = -Bail; iline.AllowDiscount = false; iline.VATPercentage = 0; iline.VATPrice = 0; iline.TotalPrice = -Bail; iline.Invoice = inv; iline.LineNumber = iline.Invoice.InvoiceLine.Count; iline.LedgerBookingCode = iline.Invoice.Location.DefaultBailPriceBookingCode; } } if (inv.InvoiceLine.Count > 0) { // recalc & process invoice inv.GenerateInvoiceNumber(ControlObjectContext); inv.AllInvoiceLinesToSameLedger(inv.Ledger); inv.RecalcTotals(); // save invoice id LabelInvoiceId.Text = inv.Id.ToString(); } else { ControlObjectContext.InvoiceSet.DeleteObject(inv); } } }