public override void Initialize()
        {
            base.Initialize();
            ExportInvoice.SetVisible(false);

            var curCoutry = (PXSelect <Branch> .Select(Base, PX.Data.Update.PXInstanceHelper.CurrentCompany)).TopFirst;

            if (curCoutry?.CountryID == "TW" || curCoutry?.BaseCuryID == "TWD")
            {
                ExportInvoice.SetVisible(true);
                Base.report.AddMenuAction(ExportInvoice);
            }
        }
        // GET: ExportInvoice
        public ActionResult Index(Guid id)
        {
            var           exportInvoices = db.ExportInvoices.Where(n => n.ExportId == id && n.AgencyId == user.Agency.Id).Include(e => e.Agency).Include(e => e.ExportGood).OrderByDescending(n => n.CreatedAt);
            ExportInvoice model          = exportInvoices.FirstOrDefault() == null ? new ExportInvoice()
            {
                AgencyId = user.Agency.Id, ExportId = id, InvoiceDate = DateTime.Now, CreatedBy = user.Staff.UserName, CreatedAt = DateTime.Now, Id = Guid.NewGuid()
            } : exportInvoices.FirstOrDefault();

            ViewBag.MAWB = new SelectList(db.MAWBs.Where(n => n.AgencyId == user.Agency.Id), "Id", "Name");

            ViewBag.HAWB = new SelectList(db.HAWBs.Where(n => n.AgencyId == user.Agency.Id), "Id", "Name");

            ViewBag.DeliveryComId = new SelectList(db.DeliveryComs, "Id", "Name", model.DeliveryComId);
            return(View(model));
        }
        public ActionResult Add(ExportInvoice exportInvoice, string[] MAWB, string [] HAWB)
        {
            if (MAWB == null)
            {
                MAWB = new string[] { };
            }
            if (HAWB == null)
            {
                HAWB = new string[] { };
            }
            exportInvoice.InvoiceNo = Request["InvoiceNo"];
            if (db.ExportInvoices.Where(n => n.Id == exportInvoice.Id).Count() > 0)
            {
                #region Update
                var item = exportInvoice;
                item.AgencyId      = user.Agency.Id;
                item.ExportId      = exportInvoice.ExportId;
                item.InvoiceDate   = exportInvoice.InvoiceDate;
                item.InvoiceHour   = exportInvoice.InvoiceHour;
                item.InvoiceNo     = exportInvoice.InvoiceNo;
                item.Notes         = exportInvoice.Notes;
                item.DeliveryComId = exportInvoice.DeliveryComId;
                item.StaffId       = user.Staff.UserName;
                item.UpdatedAt     = DateTime.Now;
                item.UpdatedBy     = user.Staff.UserName;
                foreach (var ha in db.HAWBDetails.Where(n => n.ExportInvoiceId == item.Id))
                {
                    db.HAWBDetails.Remove(ha);
                }
                foreach (var ma in db.MAWBDetails.Where(n => n.ExportInvoiceId == item.Id))
                {
                    db.MAWBDetails.Remove(ma);
                }

                foreach (var ha in HAWB)
                {
                    db.HAWBDetails.Add(new HAWBDetail()
                    {
                        CreatedAt       = DateTime.Now,
                        CreatedBy       = user.Staff.UserName,
                        ExportInvoiceId = item.Id,
                        UpdatedAt       = DateTime.Now,
                        UpdatedBy       = user.Staff.UserName,
                        Id     = Guid.NewGuid(),
                        HAWBId = ha
                    });
                }
                foreach (var ma in MAWB)
                {
                    db.MAWBDetails.Add(new MAWBDetail()
                    {
                        CreatedAt       = DateTime.Now,
                        CreatedBy       = user.Staff.UserName,
                        ExportInvoiceId = item.Id,
                        UpdatedAt       = DateTime.Now,
                        UpdatedBy       = user.Staff.UserName,
                        Id     = Guid.NewGuid(),
                        MAWBId = ma
                    });
                }
                db.SaveChanges();
                #endregion
            }
            else
            {
                #region add
                var item = exportInvoice;
                item.AgencyId    = user.Agency.Id;
                item.ExportId    = exportInvoice.ExportId;
                item.InvoiceDate = exportInvoice.InvoiceDate;
                item.InvoiceHour = exportInvoice.InvoiceHour;
                item.InvoiceNo   = exportInvoice.InvoiceNo;
                item.Notes       = exportInvoice.Notes;
                item.StaffId     = user.Staff.UserName;
                item.UpdatedAt   = DateTime.Now;
                item.UpdatedBy   = user.Staff.UserName;
                db.ExportInvoices.Add(item);
                foreach (var ha in item.HAWBDetails)
                {
                    db.HAWBDetails.Remove(ha);
                }
                foreach (var ma in item.MAWBDetails)
                {
                    db.MAWBDetails.Remove(ma);
                }

                foreach (var ha in HAWB)
                {
                    db.HAWBDetails.Add(new HAWBDetail()
                    {
                        CreatedAt       = DateTime.Now,
                        CreatedBy       = user.Staff.UserName,
                        ExportInvoiceId = item.Id,
                        UpdatedAt       = DateTime.Now,
                        UpdatedBy       = user.Staff.UserName,
                        Id     = Guid.NewGuid(),
                        HAWBId = ha
                    });
                }
                foreach (var ma in MAWB)
                {
                    db.MAWBDetails.Add(new MAWBDetail()
                    {
                        CreatedAt       = DateTime.Now,
                        CreatedBy       = user.Staff.UserName,
                        ExportInvoiceId = item.Id,
                        UpdatedAt       = DateTime.Now,
                        UpdatedBy       = user.Staff.UserName,
                        Id     = Guid.NewGuid(),
                        MAWBId = ma
                    });
                }
                db.SaveChanges();
                #endregion
            }

            var exportInvoices = db.ExportInvoices.Where(n => n.ExportId == exportInvoice.Id && n.AgencyId == user.Agency.Id).Include(e => e.Agency).Include(e => e.ExportGood).OrderByDescending(n => n.CreatedAt);

            ViewBag.MAWB = new SelectList(db.MAWBs.Where(n => n.AgencyId == user.Agency.Id), "Id", "Name");

            ViewBag.HAWB          = new SelectList(db.HAWBs.Where(n => n.AgencyId == user.Agency.Id), "Id", "Name");
            ViewBag.DeliveryComId = new SelectList(db.DeliveryComs, "Id", "Name", exportInvoice.DeliveryComId);
            return(Redirect("/ExportInvoice/Index/" + exportInvoice.ExportId));
        }