private bool UpdateInvoice(Entities.Invoice invoice)
        {
            int clientID = 0;

            Facade.IInvoice         facInvoice         = new Facade.Invoice();
            Facade.IInvoiceOneLiner facInvoiceOneLiner = new Facade.Invoice();
            bool    retVal = false;
            DataSet dsClientID;

            string userName = ((Entities.CustomPrincipal)Page.User).UserName;

            //GetClientForOneLinerInvoiceId should work for most invoice types, where as GetClientInvoiceId only works for groupage invoices
            if (invoice.InvoiceType == eInvoiceType.Normal)
            {
                dsClientID = facInvoice.GetClientForInvoiceId(invoice.InvoiceId);
            }
            else
            {
                dsClientID = facInvoiceOneLiner.GetClientForOneLinerInvoiceId(invoice.InvoiceId);
            }


            int.TryParse(dsClientID.Tables[0].Rows[0]["ClientId"].ToString(), out clientID);

            retVal = facInvoice.Update(invoice, clientID, userName);

            return(retVal);
        }
        private Entities.Invoice PopulateInvoice(int invoiceId)
        {
            Entities.Invoice m_Invoice = null;

            Facade.IInvoice facInvoice = new Orchestrator.Facade.Invoice();
            m_Invoice = facInvoice.GetForInvoiceId(invoiceId);

            return(m_Invoice);
        }
示例#3
0
        /// <summary>
        /// 更新修改
        /// </summary>
        /// <param name="model"></param>
        public void updateInvoice(Entities.Invoice model)
        {
            var item = _sysInvoiceRepository.getById(model.Id);

            if (item == null)
            {
                return;
            }
            _sysInvoiceRepository.update(model);
        }
示例#4
0
 public Task <object> Handle(AddNewInvoiceCommand command, CancellationToken cancellationToken)
 {
     if (!command.IsValid())
     {
         NotifyValidationErrors(command);
     }
     else
     {
         List <InvoiceItem> items = new List <InvoiceItem>();
         foreach (InvoiceItemModel invoiceItem in command.Items)
         {
             InvoiceItem item = new InvoiceItem
                                (
                 null,
                 new Entities.Product(new Identity((uint)invoiceItem.ProductID), null, null, null, null, null, null, null),
                 new Entities.Unit(new Identity((uint)invoiceItem.UnitID), null),
                 new Price(invoiceItem.Price),
                 new Note(invoiceItem.Note),
                 new Quantity(invoiceItem.Quantity),
                 new Weight(invoiceItem.Weight),
                 new Price(invoiceItem.TotalPrice),
                 new Deliveried(false),
                 new Quantity(0)
                                );
             items.Add(item);
         }
         Entities.Invoice Invoice = new Entities.Invoice
                                    (
             null,
             new Entities.Customer((uint)command.CustomerID, null, null, null, null, null, null, null, null),
             new DeliveryTime(command.DeliveryTime),
             new Price(command.TotalPrice),
             new Note(command.Note),
             new Weight(command.WeightTotal),
             new Code(command.Code),
             items
                                    );
         InvoiceModel model = _InvoiceRepository.Add(Invoice);
         if (model != null)
         {
             //send sms
             CustomerModel customer = _CustomerRepository.Get(command.CustomerID);
             if (customer != null)
             {
                 string message = "Bạn vừa đặt hàng thành công trên avita. Mã đơn hàng của bạn là: " +
                                  Invoice.Code + ". Vui lòng truy cập fanpage để xem tình trạng đơn hàng";
                 SendSMS.SendSMSCommon.SendSMS(message, "+84" + customer.PhoneNumber.Substring(1));
             }
             return(Task.FromResult(model.ID as object));
         }
         _bus.RaiseEvent(new DomainNotification("Invoice", "Server error", NotificationCode.Error));
     }
     return(Task.FromResult(null as object));
 }
示例#5
0
 public Task <object> Handle(UpdateInvoiceCommand command, CancellationToken cancellationToken)
 {
     if (!command.IsValid())
     {
         NotifyValidationErrors(command);
     }
     else
     {
         List <InvoiceItem> items = new List <InvoiceItem>();
         foreach (InvoiceItemModel invoiceItem in command.Items)
         {
             InvoiceItem item = new InvoiceItem
                                (
                 new Identity((uint)invoiceItem.ID),
                 new Entities.Product(new Identity((uint)invoiceItem.ProductID), null, null, null, null, null, null, null),
                 new Entities.Unit(new Identity((uint)invoiceItem.UnitID), null),
                 new Price(invoiceItem.Price),
                 new Note(invoiceItem.Note),
                 new Quantity(invoiceItem.Quantity),
                 new Weight(invoiceItem.Weight),
                 new Price(invoiceItem.TotalPrice),
                 new Deliveried(false),
                 new Quantity(0)
                                );
             items.Add(item);
         }
         Entities.Invoice Invoice = new Entities.Invoice
                                    (
             new Identity((uint)command.ID),
             new Entities.Customer((uint)command.CustomerID, null, null, null, null, null, null, null, null),
             new DeliveryTime(command.DeliveryTime),
             new Price(command.TotalPrice),
             new Note(command.Note),
             new Weight(command.WeightTotal),
             new Code(command.Code),
             items
                                    );
         bool result = _InvoiceRepository.Update(Invoice);
         return(Task.FromResult(result as object));
     }
     return(Task.FromResult(null as object));
 }
示例#6
0
        protected void btnEmailOneLiner_Click(object sender, EventArgs e)
        {
            if (ViewState["invoice"] != null)
            {
                m_Invoice = (Entities.Invoice)ViewState["invoice"];

                using (MailMessage mailMessage = new System.Net.Mail.MailMessage())
                {
                    mailMessage.From = new MailAddress(Orchestrator.Globals.Configuration.MailFromAddress, Orchestrator.Globals.Configuration.MailFromName);

                    string emailAddress = this.cboEmail.Text;

                    if (this.cboEmail.SelectedValue != String.Empty)
                    {
                        emailAddress = this.cboEmail.SelectedValue;
                    }

                    mailMessage.To.Add(new MailAddress(emailAddress));

                    mailMessage.Attachments.Add(new Attachment(Server.MapPath(m_Invoice.PDFLocation)));
                    mailMessage.Subject    = Orchestrator.Globals.Configuration.InstallationCompanyName + " Invoice Number " + m_Invoice.InvoiceId.ToString();
                    mailMessage.IsBodyHtml = false;

                    // We need to get/determine what text should be attached to the email for the invoice.
                    string body = string.Format("Please find attached Invoice “{0}” from {1}. If you require POD’s please access the self service website here {2}. Please contact Customer Services on {3}  for additional help,\n\n Regards", m_Invoice.InvoiceId.ToString(), Orchestrator.Globals.Configuration.InstallationCompanyName, Orchestrator.Globals.Configuration.OrchestratorURL, Orchestrator.Globals.Configuration.InstallationCustomerServicesNumber);
                    mailMessage.Body = body;

                    SmtpClient smtp = new System.Net.Mail.SmtpClient();
                    smtp.Host        = Globals.Configuration.MailServer;
                    smtp.Credentials = new NetworkCredential(Globals.Configuration.MailUsername, Globals.Configuration.MailPassword);

                    smtp.Send(mailMessage);
                    lblEmailSent.Visible = true;
                }
            }
        }
示例#7
0
 /// <summary>
 /// 新增,插入
 /// </summary>
 /// <param name="model"></param>
 public void insertInvoice(Entities.Invoice model)
 {
     //if (existAccount(model.Name))
     //   return;
     _sysInvoiceRepository.insert(model);
 }
示例#8
0
        ///	<summary>
        /// Load Invoice
        ///	</summary>
        private void LoadInvoice()
        {
            //if (ViewState["invoice"]==null)
            //{
            Facade.IInvoice      facInvoice      = new Facade.Invoice();
            Facade.IInvoiceExtra facInvoiceExtra = new Facade.Invoice();
            m_Invoice = facInvoice.GetForInvoiceId(m_InvoiceNo);

            if (m_Invoice.InvoiceType == eInvoiceType.SelfBill)
            {
                m_Invoice.Extras = facInvoiceExtra.GetExtraCollectionForInvoiceId(m_Invoice.InvoiceId);
            }

            ViewState["invoice"] = m_Invoice;
            //}
            //else
            //    m_Invoice = (Entities.Invoice)ViewState["invoice"];

            // Load the report with the relevant details
            if (m_Invoice != null)
            {
                lblInvoiceNo.Text      = m_Invoice.InvoiceId.ToString();
                lblInvoiceNo.ForeColor = Color.Black;

                lblInvoiceType.Text = m_Invoice.InvoiceType.ToString();

                if (m_Invoice.InvoiceType == eInvoiceType.SelfBill)
                {
                    lblClientInvoiceSelfBillAmount.Visible = true;
                    lblClientSelfBillInvoiceNumber.Visible = true;
                    txtClientSelfBillAmount.Visible        = true;
                    txtClientSelfBillAmount.Text           = m_Invoice.ClientInvoiceAmount.ToString("C");
                    txtClientSelfBillInvoiceNumber.Visible = true;
                    txtClientSelfBillInvoiceNumber.Text    = m_Invoice.SelfBillInvoiceNumber;
                    divClientSelfBillAmount.Visible        = true;
                    chkSelfBillRemainder.Visible           = true;
                    lblRemainder.Visible = true;
                }

                if (m_Invoice.OverrideReason != string.Empty)
                {
                    pnlOverride.Visible         = true;
                    chkOverride.Checked         = true;
                    txtOverrideReason.Text      = m_Invoice.OverrideReason.ToString();
                    txtOverrideGrossAmount.Text = m_Invoice.OverrideTotalAmountGross.ToString("C");
                    txtOverrideNetAmount.Text   = m_Invoice.OverrideTotalAmountNet.ToString("C");
                    txtOverrideVAT.Text         = m_Invoice.OverrideTotalAmountVAT.ToString("C");
                }

                // Display the invoice date, but only allow the date to be altered if the invoice has not been posted.
                dteInvoiceDate.SelectedDate = m_Invoice.InvoiceDate;
                dteInvoiceDate.Enabled      = !m_Invoice.Posted;

                lblDateCreated.Text      = m_Invoice.CreatedDate.ToShortDateString();
                lblDateCreated.ForeColor = Color.Black;

                txtInvoiceNotes.Text = m_Invoice.InvoiceDetails;

                chkIncludePODs.Checked = m_Invoice.IncludePODs;

                chkIncludeReferences.Checked = m_Invoice.IncludeReferences;

                if (m_Invoice.IncludeDemurrage)
                {
                    chkIncludeDemurrage.Checked    = true;
                    rdoDemurrageType.SelectedIndex = Convert.ToInt32(m_Invoice.DemurrageType);
                    rdoDemurrageType.Visible       = true;
                }
                else
                {
                    chkIncludeDemurrage.Visible = false;
                    lblNoDemurrage.Visible      = true;
                    rdoDemurrageType.Visible    = false;
                }

                if (m_Invoice.IncludeFuelSurcharge)
                {
                    chkIncludeFuelSurcharge.Checked    = true;
                    txtFuelSurchargeRate.Text          = m_Invoice.FuelSurchargeRate.ToString();
                    rdoFuelSurchargeType.SelectedIndex = Convert.ToInt32(m_Invoice.FuelSurchargeType);
                    rdoFuelSurchargeType.Visible       = true;
                    divFuelSurcharge.Visible           = true;
                }
                else
                {
                    divFuelSurcharge.Visible        = false;
                    chkIncludeFuelSurcharge.Checked = false;
                    rdoFuelSurchargeType.Visible    = false;
                }

                chkJobDetails.Checked = m_Invoice.IncludeJobDetails;

                chkExtraDetails.Checked = m_Invoice.IncludeExtraDetails;

                rdoSortType.SelectedIndex = Convert.ToInt32(m_Invoice.InvoiceSortingType) - 1;

                ViewState[C_JOBIDCSV_VS] = m_Invoice.JobIdCSV;

                if (m_Invoice.InvoiceType == eInvoiceType.SelfBill && m_Invoice.Extras != null)
                {
                    if (m_Invoice.Extras.Count != 0)
                    {
                        pnlExtras.Visible   = true;
                        dgExtras.DataSource = m_Invoice.Extras;
                        dgExtras.DataBind();



                        m_extraIdCSV = "";
                        foreach (Entities.Extra extra in m_Invoice.Extras)
                        {
                            if (m_extraIdCSV.Length > 0)
                            {
                                m_extraIdCSV += ",";
                            }
                            m_extraIdCSV += extra.ExtraId;
                        }

                        ViewState["ExtraIdCSV"] = m_extraIdCSV;
                        chkExtraDetails.Visible = true;
                    }
                    else
                    {
                        pnlExtras.Visible = false;
                    }
                }

                if (m_isUpdate)
                {
                    if (m_Invoice.ForCancellation)
                    {
                        btnAdd.Visible             = false;
                        btnSendToAccounts.Visible  = false;
                        chkPostToExchequer.Visible = false;
                        chkDelete.Checked          = true;
                    }
                    else
                    {
                        if (!chkPostToExchequer.Checked)
                        {
                            btnAdd.Visible             = true;
                            btnSendToAccounts.Visible  = true;
                            chkPostToExchequer.Visible = true;
                            chkDelete.Checked          = false;
                        }
                    }
                }
                else
                {
                    chkPostToExchequer.Visible = true;
                }

                if (m_Invoice.Posted)
                {
                    btnAdd.Visible                         = false;
                    btnSendToAccounts.Visible              = false;
                    chkPostToExchequer.Checked             = true;
                    chkPostToExchequer.Visible             = true;
                    pnlInvoiceDeleted.Visible              = false;
                    chkDelete.Visible                      = false;
                    pnlExtras.Enabled                      = false;
                    pnlIncludes.Enabled                    = false;
                    pnlOverride.Enabled                    = false;
                    chkOverride.Enabled                    = false;
                    pnlSelfRemainder.Enabled               = false;
                    txtInvoiceNotes.Enabled                = false;
                    rdoSortType.Enabled                    = false;
                    txtClientSelfBillAmount.Enabled        = false;
                    chkSelfBillRemainder.Enabled           = false;
                    txtClientSelfBillInvoiceNumber.Enabled = false;
                    btnSendToAccounts.Visible              = false;
                    btnViewInvoice.Visible                 = false;
                    dteInvoiceDate.Enabled                 = false;
                }
                else
                {
                    btnAdd.Visible             = true;
                    btnSendToAccounts.Visible  = true;
                    chkPostToExchequer.Checked = false;
                    pnlInvoiceDeleted.Visible  = true;
                    chkDelete.Visible          = true;
                }
            }

            Header1.Title    = "Update Invoice";
            Header1.subTitle = "Please make any changes neccessary.";
            btnAdd.Text      = "Update";
        }
        private void PostToAccountsSystem(IEnumerable <int> selectedInvoiceIds)
        {
            Entities.Invoice _Invoice   = null;
            Facade.IInvoice  facInvoice = new Facade.Invoice();
            bool             retVal     = false;

            string invoicesPosted        = string.Empty;
            string invoicesFailed        = string.Empty;
            string invoicesAlreadyPosted = string.Empty;

            //For each selected invoice
            foreach (int invoiceId in selectedInvoiceIds)
            {
                _Invoice = PopulateInvoice(invoiceId);
                try
                {
                    // Check to make sure none of the selected invoices have been posted.
                    // If any have been posted, prevent the posting from going ahead again.

                    // Check whether any of the selected invoices are "self bill".
                    // If they are then do not allow them to be posted to accounts.
                    // At the time of writing this code TF and JS agreed that none of our existing clients
                    // actually posted self bill invoices anyway (although some had been posted in the past by mistake!)
                    // so the ability to post self bill invoices has not been made configurable. TF:10/09/2008
                    if (_Invoice.Posted || _Invoice.InvoiceType == eInvoiceType.SelfBill || _Invoice.ForCancellation == true)
                    {
                        retVal = false;
                        invoicesAlreadyPosted += invoiceId.ToString() + ", ";
                    }
                    else
                    {
                        _Invoice.Posted = true;
                        retVal          = UpdateInvoice(_Invoice);
                    }
                }
                catch (Exception e)
                {
                    string err = GetErrorString(e);
                    lblError.Text    = "An error occured when posting Invoice Id " + invoiceId.ToString() + ".<br/>" + err;
                    pnlError.Visible = true;
                    return;
                }

                if (retVal)
                {
                    invoicesPosted += invoiceId.ToString() + ", ";
                    btnPost.Enabled = false;
                }
                else
                {
                    invoicesFailed  += invoiceId.ToString() + ", ";
                    lblError.Text    = "The following Invoices failed to post: " + invoicesFailed + ".<br/>";
                    pnlError.Visible = true;
                }

                if (invoicesAlreadyPosted != string.Empty)
                {
                    lblError.Text    = "The following Invoices were not posted because they are Self Bill, are Cancelled or have already been posted: " + invoicesAlreadyPosted + ".<br/>";
                    pnlError.Visible = true;
                }
            }

            PopulateInvoices();
        }
示例#10
0
        public ActionResult Index(FormCollection formCollection)
        {
            try
            {
                var invoice = new invoice();

                var invoiceData = new invoiceData();

                var currency = _currencySvc.GetById(int.Parse(formCollection["CurrencyId"]));

                invoice.invoiceData = invoiceData;
                invoiceData.id      = "data"; //Thuộc tính ID của thẻ <invoiceData ID="data">

                var sss = Bkav.eHoadon.XML.eHoadon.Entity.Create.invoiceDataInvoiceType.Item01GTKT;

                //Thông tin chung về hóa đơn
                invoiceData.invoiceAppRecordId = getRandomNumber(999999);
                //ID của bản ghi được quản lý bởi phần mềm Lập hóa đơn của DN.
                invoiceData.invoiceType = sss; //Ký hiệu loại hóa đơn
                var releaseId = -1;
                if (int.TryParse(formCollection["ResleaseIdNo"], out releaseId))
                {
                    var release = _listReleaseInvoiceSvc.GetById(releaseId);
                    invoiceData.templateCode  = release.No;
                    invoiceData.invoiceSeries = release.SerialInvoice;
                }
                else
                {
                    invoiceData.templateCode = formCollection["ResleaseIdNo"];
                    //"01GTKT0/089";                //Ký hiệu mẫu hóa đơn
                    invoiceData.invoiceSeries = formCollection["Serial"]; //"AC/14E";
                }
                //"01GTKT0/089";                //Ký hiệu mẫu hóa đơn
                invoiceData.invoiceNumber = formCollection["InvoiceNumber"];
                //createUid(20);               //Số hóa đơn hiện tại có chiều dài 7 chữ số
                invoiceData.invoiceName       = "Hóa đơn giá trị gia tăng"; //Tên loại hóa đơn
                invoiceData.invoiceIssuedDate = DateTime.Now;               //Ngày xuất hóa đơn
                invoiceData.signedDate        = DateTime.Now;               //Ngày ký số lên hóa đơn, có thể lấy là ngày xuất hóa đơn
                invoiceData.submittedDate     = DateTime.Now;
                //Ngày gửi hóa đơn lên CQT, tương đương với ngày đẩy vào thiết bị xác thực, có thể lấy là ngày xuất hóa đơn
                invoiceData.currencyCode = currency != null ? currency.CurrencyCode : "";
                //Ký hiệu mã tiền tệ sử dụng: VND, USD,...
                //invoiceData.isAdjusted = 1;                              //Trạng thái hóa đơn: 1: hóa đơn thường, 5: hóa đơn điều chỉnh,.... trong file Doc mô tả chuẩn XML

                //Thông tin thanh toán hóa đơn
                var paymentInfo = new paymentInfo();
                paymentInfo.paymentMethodName = formCollection["PaymentsType"];
                //"Tiền mặt";                               //Thông tin về phương thức thanh toán hóa đơn: Tiền mặt, Tiền mặt/Chuyển khoản, Chuyển khoản
                List <paymentInfo> payments = invoiceData.payments;
                payments.Add(paymentInfo);

                //Thông tin người bán (Seller)
                //invoiceData.sellerAppRecordId = createUid(20);                            //Tùy doanh nghiệp có thể dùng chung trường ID của bản ghi được quản lý bởi phần mềm Lập hóa đơn của DN.
                invoiceData.sellerLegalName = formCollection["CompanyNameAcc"];
                //"CÔNG TY TNHH DỊCH VỤ TIN HỌC FPT (Demo)";  //Tên doanh nghiệp bán hàng hóa dịch vụ

                var random = new Random();
                //String tin = allowTin[random.Next(allowTin.Length)];
                //invoiceData.sellerTaxCode = tin;                                          //Mã số thuến người bán

                invoiceData.sellerAddressLine = formCollection["AddressAcc"];
                //"Tầng 6 Tòa nhà Thành Công, Dịch Vọng Hậu, Cầu Giấy, Hà Nội";  //Địa chỉ người bán
                invoiceData.sellerPhoneNumber = formCollection["PhoneAcc"];
                //"0812345678";                                                  //Số điện thoại người bán
                invoiceData.sellerFaxNumber = formCollection["PhoneAcc"]; //"0812345678";
                //invoiceData.sellerContactPersonName = formCollection["sellerAddressLine"];// "Đỗ C";                                            //Tên người đại diện công ty đăng ký kinh doanh
                //invoiceData.sellerEmail = formCollection["sellerAddressLine"]; //"*****@*****.**";                                              //email đăng ký kinh doanh
                //invoiceData.sellerSignedPersonName = formCollection["sellerAddressLine"];// "Phạm A";                                   //Người bán hàng hoặc người thực hiện việc xuất hóa đơn
                //invoiceData.sellerSubmittedPersonName = formCollection["sellerAddressLine"]; //"Nguyễn B";                                      //Người thực hiện phê duyệt hoặc gửi hóa đơn đi xác thực

                //Thông tin người mua ( Buyer)
                invoiceData.buyerLegalName = formCollection["CompanyName"];
                // "Công ty Thử Nghiệm";                                     //Tên doanh nghiệp bán hàng hóa dịch vụ
                invoiceData.buyerDisplayName = formCollection["CustomerName"]; //"Nguyễn Tiến X";
                invoiceData.buyerTaxCode     = formCollection["CompanyCode"];
                //"0104128565";                                                       //Mã số thuến người mua

                invoiceData.buyerAddressLine = formCollection["Address"];
                //"15 Nguyễn Du - Hai Bà Trưng - Hà Nội";                   //Địa chỉ người bán
                invoiceData.buyerPhoneNumber = "0812345678"; //Số điện thoại người mua
                invoiceData.buyerFaxNumber   = "0812345678";
                invoiceData.buyerEmail       = formCollection["BuyerEmail"];
                //"*****@*****.**";                                               //email đăng ký kinh doanh

                invoiceData.invoiceNote = formCollection["Comment"];
                //Thông tin các mặt hàng
                invoiceData.items = new List <invoiceItem>();

                //Thêm mặt hàng thứ nhất
                var invoiceItem = new invoiceItem();

                //invoiceItemList[0].promotion
                uint i = 1;

                var data = formCollection.AllKeys.Count();

                for (int j = 0; j < (data - 27) / 10; j++)
                {
                    invoiceItem = new invoiceItem();
                    var vatCategoryPercentage = 0;
                    int.TryParse(formCollection[string.Format("invoiceItemList[{0}].vatCategoryPercentage", j)],
                                 out vatCategoryPercentage);

                    var itemTotalAmountWithoutVat = 0;
                    int.TryParse(formCollection[string.Format("invoiceItemList[{0}].itemTotalAmountWithoutVat", j)],
                                 out itemTotalAmountWithoutVat);
                    invoiceItem.lineNumber = i; //Dòng hóa đơn
                    invoiceItem.itemCode   = formCollection[string.Format("invoiceItemList[{0}].itemCode", j)];
                    //Mã hàng hóa
                    invoiceItem.itemName = formCollection[string.Format("invoiceItemList[{0}].itemName", j)];
                    //Tên hàng hóa
                    invoiceItem.unitName = formCollection[string.Format("invoiceItemList[{0}].unitCode", j)];
                    ; //Đơn vị tính
                    try
                    {
                        invoiceItem.quantity = int.Parse(formCollection[string.Format("invoiceItemList[{0}].quantity", j)]);
                        //Số lượng
                        invoiceItem.unitPrice = int.Parse(formCollection[string.Format("invoiceItemList[{0}].unitPrice", j)]);
                    }
                    catch (Exception)
                    {
                        // Cho phép nhập thành tiền
                        invoiceItem.quantity  = 0;
                        invoiceItem.unitPrice = 0;
                    }
                    //Đơn giá
                    invoiceItem.vatPercentage = vatCategoryPercentage;
                    //Thuế xuất của mặt hàng: -2: không kê khai thuế, -1: không chịu thuế, 0: 0%, 5:5%, 10:10%.....
                    invoiceItem.itemTotalAmountWithoutVat = itemTotalAmountWithoutVat;
                    //Tổng tiền chưa thuế của dòng hóa đơn: = số lượng * đơn giá
                    invoiceData.items.Add(invoiceItem);
                    i++;
                }
                invoiceData.invoiceTaxBreakdowns = new List <invoiceTaxBreakdownInfo>();

                //Tạo thông tin cho mức thuế xuất 5%
                var invoiceTaxBreakdownInfo = new invoiceTaxBreakdownInfo();

                var vatCatTaxAmt = 0;


                var vatCatTaxableAmt = 0;

                var vatPercentage = 0;
                int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCategoryPercentage"] + "", out vatPercentage);
                int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCatTaxAmt"], out vatCatTaxAmt);
                int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCatTaxableAmt"], out vatCatTaxableAmt);
                if (vatPercentage == 5)
                {
                    //invoiceData.totalAmountWithoutVAT = vatCatTaxAmt;
                    invoiceTaxBreakdownInfo.vatPercentage    = 5;                //Mức thuế
                    invoiceTaxBreakdownInfo.vatTaxableAmount = vatCatTaxableAmt; //Tổng tiền trên hóa đơn chịu mức thuế xuất này
                    invoiceTaxBreakdownInfo.vatTaxAmount     = vatCatTaxAmt;     //Tổng tiền thuế của mức thuế xuất này
                    invoiceData.invoiceTaxBreakdowns.Add(invoiceTaxBreakdownInfo);
                }
                else if (vatPercentage == 10)
                {
                    int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCatTaxAmt"], out vatCatTaxAmt);
                    int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCatTaxableAmt"], out vatCatTaxableAmt);
                    //invoiceData.totalAmountWithoutVAT = vatCatTaxAmt;
                    invoiceTaxBreakdownInfo.vatPercentage    = 10;               //Mức thuế
                    invoiceTaxBreakdownInfo.vatTaxableAmount = vatCatTaxableAmt; //Tổng tiền trên hóa đơn chịu mức thuế xuất này
                    invoiceTaxBreakdownInfo.vatTaxAmount     = vatCatTaxAmt;     //Tổng tiền thuế của mức thuế xuất này
                    invoiceData.invoiceTaxBreakdowns.Add(invoiceTaxBreakdownInfo);
                }

                if (formCollection.AllKeys.Contains("invoiceTaxBreakdownList[1].vatCategoryPercentage"))
                {
                    var vatPercentage10 = 0;
                    var vatCatTaxAmt1   = 0;


                    var vatCatTaxableAmt1 = 0;
                    int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCategoryPercentage"] + "", out vatPercentage10);
                    int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxAmt"], out vatCatTaxAmt1);
                    int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxableAmt"], out vatCatTaxableAmt1);
                    if (vatPercentage10 == 5)
                    {
                        int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxAmt"], out vatCatTaxAmt);
                        int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxableAmt"], out vatCatTaxableAmt);
                        //invoiceData.totalAmountWithoutVAT = vatCatTaxAmt;
                        invoiceTaxBreakdownInfo.vatPercentage    = vatPercentage10;   //Mức thuế
                        invoiceTaxBreakdownInfo.vatTaxableAmount = vatCatTaxableAmt1; //Tổng tiền trên hóa đơn chịu mức thuế xuất này
                        invoiceTaxBreakdownInfo.vatTaxAmount     = vatCatTaxAmt1;     //Tổng tiền thuế của mức thuế xuất này
                        invoiceData.invoiceTaxBreakdowns.Add(invoiceTaxBreakdownInfo);
                    }
                    else if (vatPercentage10 == 10)
                    {
                        int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxAmt"], out vatCatTaxAmt1);
                        int.TryParse(formCollection["invoiceTaxBreakdownList[1].vatCatTaxableAmt"], out vatCatTaxableAmt1);
                        //invoiceData.totalAmountWithoutVAT = vatCatTaxAmt;
                        invoiceTaxBreakdownInfo.vatPercentage    = vatPercentage10;   //Mức thuế
                        invoiceTaxBreakdownInfo.vatTaxableAmount = vatCatTaxableAmt1; //Tổng tiền trên hóa đơn chịu mức thuế xuất này
                        invoiceTaxBreakdownInfo.vatTaxAmount     = vatCatTaxAmt1;     //Tổng tiền thuế của mức thuế xuất này
                        invoiceData.invoiceTaxBreakdowns.Add(invoiceTaxBreakdownInfo);
                    }
                }



                //var vatCatTaxAmt = 0;
                //int.TryParse(formCollection["invoiceTaxBreakdownList[0].vatCatTaxAmt"], out vatCatTaxAmt);
                invoiceData.totalAmountWithoutVAT = vatCatTaxAmt; //Tổng tiền không chịu thuế trên toàn hóa đơn

                var amountForPaymentVnd = 0;
                int.TryParse(formCollection["amountForPaymentVnd"], out amountForPaymentVnd);
                invoiceData.totalVATAmount = amountForPaymentVnd; //Tổng tiền thuế trên toàn hóa đơn

                var totalAmountWithVat = 0;
                int.TryParse(formCollection["totalAmountWithVat"], out totalAmountWithVat);

                invoiceData.totalAmountWithVAT        = totalAmountWithVat; //Tổng tiền đã bao gồm cả thuế trên toàn hóa đơn
                invoiceData.totalAmountWithVATInWords = formCollection["totalAmtWithVatInWords"];
                //Tổng tiền đã bao gồm cả thuế trên toàn hóa đơn được viết bằng chữ
                invoice.invoiceData = invoiceData;
                string xmlInvoice = invoice.Serialize(Encoding.UTF8);

                var curentTranId = formCollection["tranId"];
                if (!string.IsNullOrEmpty(curentTranId))
                {
                    //var tran = _transactionSvc.GetById(int.Parse(curentTranId));
                    //var invoiceFile = tran.InvoiceXML;
                    //var currentInvoice = _invoiceSvc.GetById(tran.InvoiceID);
                }

                var fileName = Guid.NewGuid() + ".xml";
                var pathFile = Path.Combine(Server.MapPath("~/Content/File"), fileName);

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xmlInvoice);
                doc.Save(pathFile);

                //lưu vào bảng transaction/invoice/invoicedetail

                var invoices = new Entities.Invoice();

                if (invoice.invoiceData.currencyCode != null)
                {
                    var currencys = _currencySvc.GetByCode(invoice.invoiceData.currencyCode);
                    if (currencys != null && currencys.Any())
                    {
                        var cus = currencys.First();
                        invoices.CurrencyID = cus.Id;
                        //invoices.Currency = cus.BankName;
                    }
                }
                invoices.InvoiceNote = invoice.invoiceData.invoiceNote;

                if (formCollection[string.Format("CustomerId")] != null)
                {
                    invoices.CustomerInvoiceID = int.Parse(formCollection[string.Format("CustomerId")]);
                }
                invoices.AccountId = User.GetAccountId();



                invoices.InvoiceNumber = invoiceData.invoiceNumber;
                invoices.Serial        = invoiceData.invoiceSeries;

                invoices.TotalAmountWithVAT    = invoiceData.totalAmountWithVAT;
                invoices.TotalAmountWithoutVAT = invoiceData.totalAmountWithoutVAT;
                invoices.TotalVATAmount        = invoiceData.totalAmountWithVAT;
                invoices.TemplateCode          = formCollection["templateCode"];



                var invoiceDetails = new List <InvoiceDetail>();
                foreach (var item in invoiceData.items)
                {
                    var invoiceDetail = new InvoiceDetail();

                    //invoiceDetail.AdjustmentVatAmount = "";
                    // invoiceDetail.TotalAmountWithoutVAT = invoiceData.totalAmountWithoutVAT;
                    //invoiceDetail.TotalVATAmount = invoiceData.totalAmountWithVAT;
                    //invoiceDetail.TemplateCode = formCollection["templateCode"];

                    invoiceDetails.Add(invoiceDetail);
                }

                var transaction = new Transaction();


                transaction.InvoiceXML = fileName;

                transaction.TemplateCode  = invoices.TemplateCode;
                transaction.InvoiceSeries = invoices.Serial;
                int tranId = _invoiceSvc.Create(invoices, transaction);

                if (releaseId > 0)
                {
                    var invoiceNums = _invoiceNumberSvc.GetByReleaseIdAnduseStatus(releaseId, 0);
                    if (invoiceNums != null && invoiceNums.FirstOrDefault() != null)
                    {
                        var invoiceNum = invoiceNums.FirstOrDefault();
                        invoiceNum.UseStatus = 1;
                        invoiceNum.Status    = 1;
                        _invoiceNumberSvc.UpdateInvoiceNumbers(invoiceNum);
                    }
                }


                return(Json(new ResultInvoice
                {
                    Flag = true,
                    Message = "Lưu dữ liệu thành công",
                    TransactionId = tranId
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ResultInvoice
                {
                    Flag = true,
                    Message = ex.Message,
                    TransactionId = 0
                }));
            }
        }
示例#11
0
        ///	<summary>
        /// Populate Invoice
        ///	</summary>
        private void populateInvoice()
        {
            if (ViewState["invoice"] == null)
            {
                m_Invoice = new Entities.Invoice();
            }
            else
            {
                m_Invoice = (Entities.Invoice)ViewState["invoice"];
            }

            if (lblInvoiceNo.Text != "To Be Issued ... (This invoice has not yet been saved, add invoice to allocate Invoice No.)")
            {
                m_Invoice.InvoiceId = Convert.ToInt32(lblInvoiceNo.Text);
            }

            m_Invoice.InvoiceType = eInvoiceType.OneLiner;

            m_Invoice.InvoiceDetails = rtbTxtReason.Text;

            m_Invoice.InvoiceDate = rdiInvoiceDate.SelectedDate.Value;

            Facade.IExchangeRates facER = new Facade.ExchangeRates();

            int exchangeRateId = -1;

            // the txtNetAmount textbox has had its culture set by the client.
            if (this.txtNETAmount.Culture.LCID != 2057)
            {
                exchangeRateId = facER.GetCurrentExchangeRateID(Facade.Culture.GetCurrencySymbol(this.txtNETAmount.Culture.LCID), this.rdiInvoiceDate.SelectedDate.Value);
            }

            m_Invoice.ClientInvoiceAmount = Decimal.Parse(txtNETAmount.Text, System.Globalization.NumberStyles.Currency);

            if (chkPostToExchequer.Checked)
            {
                m_Invoice.Posted = true;
            }
            else
            {
                m_Invoice.Posted = false;
            }

            int     vatNo   = 0;
            decimal vatRate = 0.00M;

            //Get VAT Rate and Vat Type
            Facade.IInvoice facInv  = new Facade.Invoice();
            eVATType        vatType = (eVATType)int.Parse(cboVATType.SelectedValue);

            facInv.GetVatRateForVatType(vatType, m_Invoice.InvoiceDate, out vatNo, out vatRate);

            m_Invoice.VatRate = vatRate;
            m_Invoice.VatNo   = vatNo;

            m_Invoice.AccountCode = lblAccountCode.Text;
            m_Invoice.NominalCode = cboNominalCode.SelectedValue;

            // Deleted checked not required until the Invoice's are allowed to be deleted
            if (chkDelete.Checked)
            {
                m_Invoice.ForCancellation = true;
            }
            else
            {
                m_Invoice.ForCancellation = false;
            }
        }
示例#12
0
        ///	<summary>
        /// Load Invoice
        ///	</summary>
        private void LoadInvoice()
        {
            if (ViewState["invoice"] == null)
            {
                Facade.IInvoice facInvoice = new Facade.Invoice();
                m_Invoice = facInvoice.GetForInvoiceId(m_InvoiceNo);

                ViewState["invoice"] = m_Invoice;
            }
            else
            {
                m_Invoice = (Entities.Invoice)ViewState["invoice"];
            }

            // Load the report with the relevant details
            if (m_Invoice != null)
            {
                lblInvoiceNo.Text      = m_Invoice.InvoiceId.ToString();
                lblInvoiceNo.ForeColor = Color.Black;

                lblInvoiceType.Text = m_Invoice.InvoiceType.ToString();

                lblDateCreated.Text      = m_Invoice.CreatedDate.ToShortDateString();
                lblDateCreated.ForeColor = Color.Black;

                rdiInvoiceDate.SelectedDate = m_Invoice.InvoiceDate;

                rtbTxtReason.Text = m_Invoice.InvoiceDetails;

                txtNETAmount.Text = m_Invoice.ClientInvoiceAmount.ToString("N2");

                rdiInvoiceDate.Enabled = !m_Invoice.Posted;

                lblAccountCode.Text = m_Invoice.AccountCode;

                if (cboNominalCode.FindItemByValue(m_Invoice.NominalCode) != null)
                {
                    cboNominalCode.FindItemByValue(m_Invoice.NominalCode).Selected = true;
                }
                cboNominalCode.Enabled = !m_Invoice.Posted;

                //cboVATType.SelectedValue = Convert.ToInt32(m_Invoice.VatRate).ToString();

                // Load Client
                Facade.IInvoiceOneLiner facInv = new Facade.Invoice();
                DataSet ds = facInv.GetClientForOneLinerInvoiceId(m_Invoice.InvoiceId);

                cboClient.SelectedValue = ds.Tables[0].Rows[0]["IdentityId"].ToString();
                cboClient.Text          = ds.Tables[0].Rows[0]["OrganisationName"].ToString();
                cboClient.Enabled       = false;

                Facade.IOrganisation  facOrganisation = new Facade.Organisation();
                Entities.Organisation client          = facOrganisation.GetForIdentityId(int.Parse(cboClient.SelectedValue));

                int         LCID    = Convert.ToInt32(ds.Tables[0].Rows[0]["LCID"]);
                CultureInfo culture = new CultureInfo(LCID);
                this.txtNETAmount.Culture = culture;

                if (client != null && (client.IndividualContacts != null && client.IndividualContacts.Count > 0))
                {
                    DataSet emailDataSet = this.GetContactDataSet(client.IndividualContacts, eContactType.Email);

                    cboEmail.DataSource     = emailDataSet;
                    cboEmail.DataMember     = "contactTable";
                    cboEmail.DataValueField = "ContactDetail";
                    cboEmail.DataTextField  = "ContactDisplay";
                    cboEmail.DataBind();

                    if (this.cboEmail.Items.Count > 0)
                    {
                        this.txtEmail.Text = this.cboEmail.Items[0].Value;
                    }
                }

                if (m_isUpdate)
                {
                    if (m_Invoice.ForCancellation)
                    {
                        btnAdd.Visible             = false;
                        btnSendToAccounts.Visible  = false;
                        chkPostToExchequer.Visible = false;
                        chkDelete.Checked          = true;
                    }
                    else
                    {
                        btnAdd.Visible             = true;
                        btnSendToAccounts.Visible  = true;
                        chkPostToExchequer.Visible = true;
                        chkDelete.Checked          = false;
                    }

                    this.Title = "Update Invoice";
                    //Header1.subTitle = "Please make any changes neccessary.";
                    btnAdd.Text = "Update";
                }
                else
                {
                    chkPostToExchequer.Visible = true;
                }

                chkPostToExchequer.Visible = true;

                LoadReport();

                if (m_Invoice.Posted)
                {
                    btnAdd.Visible             = false;
                    btnSendToAccounts.Visible  = false;
                    chkPostToExchequer.Checked = true;
                    pnlInvoiceDeleted.Visible  = false;
                    chkDelete.Visible          = false;
                    chkPostToExchequer.Checked = true;
                    chkPostToExchequer.Visible = true;
                    txtNETAmount.Enabled       = false;
                    rtbTxtReason.Enabled       = false;
                    btnSendToAccounts.Visible  = false;
                    btnViewInvoice.Visible     = false;
                    rdiInvoiceDate.Enabled     = false;
                    txtNETAmount.Enabled       = false;
                    cboVATType.Enabled         = false;
                }
                else
                {
                    btnAdd.Visible             = true;
                    btnSendToAccounts.Visible  = true;
                    chkPostToExchequer.Checked = false;
                    pnlInvoiceDeleted.Visible  = true;
                    chkDelete.Visible          = true;
                }
            }
            else if (cboClient.SelectedValue != null)
            {
                Facade.IOrganisation  facOrganisation = new Facade.Organisation();
                Entities.Organisation client          = facOrganisation.GetForIdentityId(int.Parse(cboClient.SelectedValue));

                if (client != null && (client.IndividualContacts != null && client.IndividualContacts.Count > 0))
                {
                    DataSet emailDataSet = this.GetContactDataSet(client.IndividualContacts, eContactType.Email);

                    cboEmail.DataSource     = emailDataSet;
                    cboEmail.DataMember     = "contactTable";
                    cboEmail.DataValueField = "ContactDetail";
                    cboEmail.DataTextField  = "ContactDisplay";
                    cboEmail.DataBind();

                    if (this.cboEmail.Items.Count > 0)
                    {
                        this.txtEmail.Text = this.cboEmail.Items[0].Value;
                    }
                }
            }

            this.Title = "Update Invoice";
            //Header1.subTitle = "Please make any changes neccessary.";
            btnAdd.Text = "Update";
        }