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();
            }
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }