Esempio n. 1
0
        private void LoadHeaderInfo()
        {
            if (this.HHTHeaderId != null)
            {
                using (var ctx = new EF6.RT2020Entities())
                {
                    var hhtHeader = ctx.StocktakeHeader_HHT.Where(x => x.HeaderId == this.HHTHeaderId).AsNoTracking().FirstOrDefault();
                    if (hhtHeader != null)
                    {
                        txtTxNumber.Text   = hhtHeader.TxNumber;
                        txtWorkplace.Text  = WorkplaceEx.GetWorkplaceCodeById(hhtHeader.WorkplaceId.Value);
                        txtHHTId.Text      = hhtHeader.HHTId;
                        txtUploadedOn.Text = hhtHeader.UploadedOn.Value.ToString("dd MMM yyyy HH:mm:ss");
                        txtCreatedOn.Text  = hhtHeader.CreatedOn.ToString("dd MMM yyyy HH:mm:ss");
                        txtCreatedBy.Text  = StaffEx.GetStaffNumberById(hhtHeader.CreatedBy);

                        txtTotalLine_HHTData.Text        = hhtHeader.TotalRows.Value.ToString("n0");
                        txtTotalLine_StockTake.Text      = hhtHeader.TotalRows.Value.ToString("n0");
                        txtTotalLine_MissingBarcode.Text = hhtHeader.MissingRows.Value.ToString("n0");

                        txtTotalQty_HHTData.Text        = hhtHeader.TOTALQTY.Value.ToString("n0");
                        txtTotalQty_StockTake.Text      = hhtHeader.TOTALQTY.Value.ToString("n0");
                        txtTotalQty_MissingBarcode.Text = hhtHeader.MissingQty.Value.ToString("n0");

                        LoadDetailsInfo(hhtHeader.HeaderId);
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Fills Workplace From
        /// </summary>
        private void FillLocFromList()
        {
            string[] orderBy = { "WorkplaceCode" };
            string   sql     = " Retired = 0";

            WorkplaceEx.LoadCombo(ref cboLocFrom, "WorkplaceCode", false, false, "", sql, orderBy);
        }
Esempio n. 3
0
        private void CreateADJTx(Guid headerId)
        {
            using (var ctx = new EF6.RT2020Entities())
            {
                var oBatchHeader = ctx.StockTakeHeader.Find(headerId);
                if (oBatchHeader != null)
                {
                    oBatchHeader.PostedOn = DateTime.Now;
                    ctx.SaveChanges();

                    this.UpdateProduct(oBatchHeader.HeaderId, oBatchHeader.WorkplaceId.Value);

                    // Create Ledger for TxType 'STK'
                    string txNumber_Ledger = SystemInfoHelper.Settings.QueuingTxNumber(EnumHelper.TxType.ADJ);
                    Guid   ledgerHeaderId  = CreateLedgerHeader(txNumber_Ledger, oBatchHeader);
                    CreateLedgerDetails(
                        txNumber_Ledger, ledgerHeaderId, oBatchHeader.HeaderId,
                        StaffEx.GetStaffNumberById(ConfigHelper.CurrentUserId),
                        WorkplaceEx.GetWorkplaceCodeById(oBatchHeader.WorkplaceId.Value)
                        );

                    oBatchHeader.ADJNUM = txNumber_Ledger;
                    ctx.SaveChanges();
                }
            }
        }
Esempio n. 4
0
        private void FillToList()
        {
            string sql = "NatureId = '" + WorkplaceNatureEx.GetNatureIdeByCode("2").ToString() + "'";

            WorkplaceEx.LoadCombo(ref cboToWorkplace, "WorkplaceCode", false, false, string.Empty, sql);
            cboToWorkplace.SelectedIndex = cboToWorkplace.Items.Count - 1;
        }
Esempio n. 5
0
        private bool IsValid()
        {
            bool result = true;

            errorProvider.SetError(txtLoc, "");

            #region IsWorkplace Empty
            if (txtLoc.Text.Trim() == "")
            {
                errorProvider.SetError(txtLoc, "Cannot be blank!");
                result = false;
            }
            #endregion

            #region IsWorkplaceCodeInUse
            if (_WorkplaceId == Guid.Empty)
            {
                if (WorkplaceEx.IsWorkplaceCodeInUse(txtLoc.Text.Trim()))
                {
                    errorProvider.SetError(txtLoc, string.Format(Resources.Common.DuplicatedCode, "Workplace Code"));
                    result = false;
                }
            }
            #endregion

            return(result);
        }
        private void ImportData(bool overwrite)
        {
            if (PacketDataList != null && PacketDataList.Length > 0)
            {
                DateTime    uploadOn    = DateTime.Now;
                string      shop        = PacketDataList[0].Shop;
                string      hht         = PacketDataList[0].HHT.Length == 0 ? "POS_ADV1" : PacketDataList[0].HHT;
                System.Guid workplaceId = WorkplaceEx.GetWorkplaceIdByCode(shop);

                if (workplaceId != System.Guid.Empty)
                {
                    System.Guid headerId = CreateStockTakeHHTHeader(PacketDataList[0].ExportNum, hht, workplaceId, uploadOn, overwrite);

                    if (headerId != System.Guid.Empty)
                    {
                        CreateStockTakeHHTDetails(headerId, uploadOn, overwrite);

                        Result.Add(shop);
                        Result.Add("Success");
                        Result.Add(this.Remarks);
                        Result.Add(hht);
                    }
                }
                else
                {
                    Result.Add(shop);
                    Result.Add("Failed");
                    Result.Add("Shop does not exist!");
                    Result.Add(hht);
                }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Fills Workplace To
        /// </summary>
        private void FillLocToList()
        {
            string[] orderBy = { "WorkplaceCode" };
            string   sql     = " Retired = 0";

            WorkplaceEx.LoadCombo(ref cboLocTo, "WorkplaceCode", false, false, "", sql, orderBy);
            cboLocTo.SelectedIndex = cboLocTo.Items.Count - 1;
        }
Esempio n. 8
0
        private void cboToWorkplace_SelectedIndexChanged(object sender, EventArgs e)
        {
            Guid id = Guid.Empty;

            if (Guid.TryParse(cboToWorkplace.SelectedValue.ToString(), out id))
            {
                txtSelectedToWorkplace.Text = WorkplaceEx.GetWorkplaceNameById(id);
            }
        }
Esempio n. 9
0
        private void SetAttributes()
        {
            WorkplaceEx.LoadHierarchyTree(ref tvwWorkplace);
            tvwWorkplace.Dock        = DockStyle.Fill;
            tvwWorkplace.CheckBoxes  = true;
            tvwWorkplace.AfterCheck += OnAfterCheck;

            cmdPDF.Enabled = cmdExcel.Enabled = false;

            this.txtFrom.Focus();

            htmlBox1.Html = PivotHelper.QuickStart();
        }
Esempio n. 10
0
        public static void LoadComboBox_Shops(ref ComboBox target)
        {
            String shop = "3";

            if (WorkplaceNatureEx.IsNatureCodeInUse("3"))
            {
                string[] textField = { "WorkplaceCode", "WorkplaceName" };
                string   pattern   = "{0} - {1}";
                string[] orderBy   = { "WorkplaceCode" };

                WorkplaceEx.LoadCombo(ref target, textField, pattern, true, true, String.Empty, String.Empty, orderBy);
            }
        }
Esempio n. 11
0
        private void ChangePassword_Load(object sender, EventArgs e)
        {
            SetCaptions();

            if (_WorkplaceId != Guid.Empty)
            {
                var password = WorkplaceEx.GetWorkplacePasswordById(_WorkplaceId);
                if (password != "")
                {
                    _Password = password;
                    txtOldPwd.Focus();
                }
            }
        }
Esempio n. 12
0
        private void UpdateLedgerDetails()
        {
            using (var ctx = new EF6.RT2020Entities())
            {
                using (var scope = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        DateTime currMonth   = SystemInfoEx.CurrentInfo.Default.CurrentSystemDate;
                        string   whereClause = "TxDate >= CAST('" + currMonth.AddMonths(-1).ToString("yyyy-MM-dd 00:00:00") + "' AS DATETIME) AND TxDate < CAST('" + currMonth.ToString("yyyy-MM-dd 00:00:00") + "' AS DATETIME)";

                        var oHeaderList = ctx.InvtLedgerHeader.SqlQuery(
                            string.Format("Select * from InvtLedgerHeader Where{0} ", whereClause)
                            );
                        foreach (var oHeader in oHeaderList)
                        {
                            var oDetailList = ctx.InvtLedgerDetails.Where(x => x.HeaderId == oHeader.HeaderId);
                            foreach (var oDetail in oDetailList)
                            {
                                if (oDetail != null)
                                {
                                    oDetail.TxDate = oHeader.TxDate;
                                    oDetail.SHOP   = WorkplaceEx.GetWorkplaceCodeById(oHeader.WorkplaceId);

                                    #region this.AppendMissingProductWorkplace(oDetail.ProductId, oHeader.WorkplaceId);
                                    var oProdWp = ctx.ProductWorkplace.Where(x => x.ProductId == oDetail.ProductId && x.WorkplaceId == oHeader.WorkplaceId).FirstOrDefault();
                                    if (oProdWp == null)
                                    {
                                        oProdWp = new EF6.ProductWorkplace();
                                        oProdWp.ProductWorkplaceId = Guid.NewGuid();
                                        oProdWp.ProductId          = oDetail.ProductId.Value;
                                        oProdWp.WorkplaceId        = oHeader.WorkplaceId;

                                        ctx.ProductWorkplace.Add(oProdWp);
                                    }
                                    #endregion
                                }
                            }
                            ctx.SaveChanges();
                        }
                        scope.Commit();
                    }
                    catch (Exception ex)
                    {
                        scope.Rollback();
                    }
                }
            }
        }
Esempio n. 13
0
        private void FillWorkplaceList()
        {
            WorkplaceEx.LoadCombo(ref cboWorkplace, "WorkplaceCode", false);

            #region cbxWorkplace: CheckBox ComboBox
            cbxWorkplace.SetWidth(120);
            cbxWorkplace.SetSelectionMode(SelectionMode.MultiExtended);
            cbxWorkplace.Items.Clear();
            cbxWorkplace.ClearSelected();

            //cbxWorkplace.SetDataSource(cboWorkplace.DataSource);
            foreach (KeyValuePair <Guid, string> item in cboWorkplace.Items)
            {
                cbxWorkplace.AddKvpItem(item, false);
            }
            cbxWorkplace.SetDisplayMember("Value");
            cbxWorkplace.SetValueMember("Key");
            #endregion
        }
Esempio n. 14
0
        private void FillListBox()
        {
            lbStockTakeList.Items.Clear();

            using (var ctx = new EF6.RT2020Entities())
            {
                string[] orderBy       = new string[] { "TxNumber" };
                string   sql           = " YEAR(PostedOn) = 1900 AND LEN(ADJNUM) = 0 ";
                var      stkHeaderList = ctx.StockTakeHeader.Where(x => x.PostedOn.Value.Year == 1900 && x.ADJNUM.Length == 0).OrderBy(x => x.TxNumber).AsNoTracking().ToList();
                foreach (var stkHeader in stkHeaderList)
                {
                    StringBuilder stk = new StringBuilder();
                    stk.Append(stkHeader.TxNumber);
                    stk.Append(" - ");
                    stk.Append(WorkplaceEx.GetWorkplaceCodeById(stkHeader.WorkplaceId.Value));
                    lbStockTakeList.Items.Add(stk.ToString());
                }
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Creates the ledger details.
        /// </summary>
        /// <param name="headerId">The header id.</param>
        /// <param name="subLedgerHeaderId">The sub ledger header id.</param>
        private void CreateLedgerDetails(Guid headerId, Guid subLedgerHeaderId, DateTime txDate, Guid workplaceId)
        {
            string query = "HeaderId = '" + subLedgerHeaderId.ToString() + "'";

            using (var ctx = new EF6.RT2020Entities())
            {
                var detailList = ctx.InvtSubLedgerADJ_Details.Where(x => x.HeaderId == subLedgerHeaderId);
                foreach (var detail in detailList)
                {
                    //InvtSubLedgerADJ_Details detail = detailList[i];
                    //if (detail != null)
                    //{
                    query = "HeaderId = '" + headerId.ToString() + "' AND ProductId = '" + detail.ProductId.ToString() + "'";
                    var objDetail = ctx.InvtLedgerDetails.Where(x => x.HeaderId == headerId && x.ProductId == detail.ProductId).FirstOrDefault();
                    if (objDetail == null)
                    {
                        objDetail             = new EF6.InvtLedgerDetails();
                        objDetail.DetailsId   = Guid.NewGuid();
                        objDetail.HeaderId    = headerId;
                        objDetail.TxType      = detail.TxType;
                        objDetail.TxNumber    = detail.TxNumber;
                        objDetail.LineNumber  = 0;
                        objDetail.ProductId   = detail.ProductId;
                        objDetail.SHOP        = WorkplaceEx.GetWorkplaceCodeById(workplaceId);
                        objDetail.TxDate      = txDate;
                        objDetail.OPERATOR    = StaffEx.GetStaffNumberById(ConfigHelper.CurrentUserId);
                        objDetail.Qty         = detail.Qty;
                        objDetail.AverageCost = detail.AverageCost;
                        objDetail.UnitAmount  = detail.AverageCost;
                        objDetail.Amount      = detail.AverageCost * detail.Qty;

                        ctx.InvtLedgerDetails.Add(objDetail);
                    }
                    //}
                }
            }
        }
Esempio n. 16
0
        /**
         * private void UpdateTXFSubLedger(string txnumber_Batch)
         * {
         *  using (var ctx = new EF6.RT2020Entities())
         *  {
         *      var oSubTXF = ctx.InvtSubLedgerTXF_Header.Find(this.TxferId);
         *      if (oSubTXF != null)
         *      {
         *          UpdateTXFSubLedgerDetail(oSubTXF.HeaderId);
         *
         *          oSubTXF.CONFIRM_TRF = this.IsConfirmedTransaction;
         *          oSubTXF.CONFIRM_TRF_LASTUPDATE = DateTime.Now;
         *          oSubTXF.CONFIRM_TRF_LASTUSER = ConfigHelper.CurrentUserId;
         *
         *          oSubTXF.ModifiedBy = ConfigHelper.CurrentUserId;
         *          oSubTXF.ModifiedOn = DateTime.Now;
         *
         *          ctx.SaveChanges();
         *      }
         *  }
         * }
         *
         * private void UpdateTXFSubLedgerDetail(Guid subledgerHeaderId)
         * {
         *  foreach (ListViewItem listItem in lvDetailsList.Items)
         *  {
         *      if (Common.Utility.IsGUID(listItem.SubItems[10].Text))
         *      {
         *          string sql = "HeaderId = '" + subledgerHeaderId.ToString() + "' AND ProductId = '" + listItem.SubItems[10].Text + "'";
         *          InvtSubLedgerTXF_Details oSubLedgerDetail = InvtSubLedgerTXF_Details.LoadWhere(sql);
         *          if (oSubLedgerDetail != null)
         *          {
         *              if (Common.Utility.IsNumeric(listItem.SubItems[9].Text))
         *              {
         *                  oSubLedgerDetail.QtyConfirmed = Convert.ToDecimal(listItem.SubItems[9].Text);
         *
         *                  oSubLedgerDetail.Save();
         *              }
         *          }
         *      }
         *  }
         * }
         */
        #endregion

        #region Ledger

        /**
         * private void UpdateLedger(string txnumber_Batch)
         * {
         *  InvtLedgerHeader oLedgerHeader = InvtLedgerHeader.Load(this.TxferId);
         *  if (oLedgerHeader != null)
         *  {
         *      UpdateLedgerDetails(oLedgerHeader.HeaderId);
         *
         *      oLedgerHeader.CONFIRM_TRF = this.IsConfirmedTransaction;
         *      oLedgerHeader.CONFIRM_TRF_LASTUPDATE = DateTime.Now;
         *      oLedgerHeader.CONFIRM_TRF_LASTUSER = ModelEx.StaffEx.GetStaffNumberById(ConfigHelper.CurrentUserId);
         *
         *      oLedgerHeader.ModifiedBy = ConfigHelper.CurrentUserId;
         *      oLedgerHeader.ModifiedOn = DateTime.Now;
         *      oLedgerHeader.Save();
         *  }
         * }
         *
         * private void UpdateLedgerDetails(Guid ledgerHeaderId)
         * {
         *  foreach (ListViewItem listItem in lvDetailsList.Items)
         *  {
         *      if (Common.Utility.IsGUID(listItem.SubItems[10].Text))
         *      {
         *          string sql = "HeaderId = '" + ledgerHeaderId.ToString() + "' AND ProductId = '" + listItem.SubItems[10].Text + "'";
         *          InvtLedgerDetails oLedgerDetail = InvtLedgerDetails.LoadWhere(sql);
         *          if (oLedgerDetail != null)
         *          {
         *              if (Common.Utility.IsNumeric(listItem.SubItems[9].Text))
         *              {
         *                  oLedgerDetail.Qty = Convert.ToDecimal(listItem.SubItems[9].Text);
         *
         *                  oLedgerDetail.Save();
         *              }
         *          }
         *      }
         *  }
         * }
         */
        #endregion

        #region FEP

        /**
         * private void UpdateFEP()
         * {
         *  FepBatchHeader oFepHeader = FepBatchHeader.Load(this.TxferId);
         *  if (oFepHeader != null)
         *  {
         *      UpdateLedgerDetails(oFepHeader.HeaderId);
         *
         *      oFepHeader.CONFIRM_TRF = this.IsConfirmedTransaction;
         *      oFepHeader.CONFIRM_TRF_LASTUPDATE = DateTime.Now;
         *      oFepHeader.CONFIRM_TRF_LASTUSER = ModelEx.StaffEx.GetStaffNumberById(ConfigHelper.CurrentUserId);
         *
         *      oFepHeader.ModifiedBy = ConfigHelper.CurrentUserId;
         *      oFepHeader.ModifiedOn = DateTime.Now;
         *      oFepHeader.Save();
         *  }
         * }
         *
         * private void UpdateFepDetails(Guid fepHeaderId)
         * {
         *  foreach (ListViewItem listItem in lvDetailsList.Items)
         *  {
         *      if (Common.Utility.IsGUID(listItem.SubItems[10].Text))
         *      {
         *          string sql = "HeaderId = '" + fepHeaderId.ToString() + "' AND ProductId = '" + listItem.SubItems[10].Text + "'";
         *          FepBatchDetail oFepDetail = FepBatchDetail.LoadWhere(sql);
         *          if (oFepDetail != null)
         *          {
         *              if (Common.Utility.IsNumeric(listItem.SubItems[9].Text))
         *              {
         *                  oFepDetail.CONFIRM_TRF_QTY = Convert.ToDecimal(listItem.SubItems[9].Text);
         *
         *                  oFepDetail.Save();
         *              }
         *          }
         *      }
         *  }
         * }
         */
        #endregion

        #region Product

        /**
         * private void UpdateProduct(InvtBatchTXF_Header oBatchHeader)
         * {
         *  string sql = "HeaderId = '" + oBatchHeader.HeaderId.ToString() + "'";
         *  InvtBatchTXF_DetailsCollection detailsList = InvtBatchTXF_Details.LoadCollection(sql);
         *  for (int i = 0; i < detailsList.Count; i++)
         *  {
         *      InvtBatchTXF_Details detail = detailsList[i];
         *      //Out
         *      UpdateProductQty(detail.ProductId, oBatchHeader.FromLocation, detail.QtyConfirmed * (-1));
         *      //In
         *      UpdateProductQty(detail.ProductId, oBatchHeader.ToLocation, detail.QtyConfirmed);
         *  }
         * }
         *
         * private void UpdateProductQty(Guid productId, Guid workplaceId, decimal qty)
         * {
         *  using (var ctx = new EF6.RT2020Entities())
         *  {
         *      //string sql = "ProductId = '" + productId.ToString() + "' AND WorkplaceId = '" + workplaceId.ToString() + "'";
         *      var item = ctx.ProductWorkplace.Where(x => x.ProductId == productId && x.WorkplaceId == workplaceId).FirstOrDefault();
         *      if (item == null)
         *      {
         *          item = new EF6.ProductWorkplace();
         *          item.ProductWorkplaceId = Guid.NewGuid();
         *          item.ProductId = productId;
         *          item.WorkplaceId = workplaceId;
         *          ctx.ProductWorkplace.Add(item);
         *      }
         *      item.CDQTY += qty;
         *      if (qty > 0)
         *      {
         *          item.RECQTY += qty;
         *      }
         *      ctx.SaveChanges();
         *  }
         * }
         */
        #endregion

        #endregion

        #region Load Txfer Header Info
        private void LoadTxferInfo()
        {
            using (var ctx = new EF6.RT2020Entities())
            {
                var oBatchHeader = ctx.InvtBatchTXF_Header.Find(this.TxferId);
                if (oBatchHeader != null)
                {
                    txtTxNumber.Text = oBatchHeader.TxNumber;
                    txtTxType.Text   = oBatchHeader.TxType;

                    cboFromLocation.SelectedValue = oBatchHeader.FromLocation;
                    cboToLocation.SelectedValue   = oBatchHeader.ToLocation;
                    dtpTxDate.Value = oBatchHeader.TxDate.Value;

                    txtLatestConfirmedOn.Text = DateTimeHelper.DateTimeToString(oBatchHeader.CONFIRM_TRF_LASTUPDATE.Value, false);
                    txtLatestConfirmedBy.Text = StaffEx.GetStaffNumberById(oBatchHeader.CONFIRM_TRF_LASTUSER.Value);

                    txtRecordStatus.Text = string.Format(txtRecordStatus.Text, oBatchHeader.TxType);

                    txtConfirmationStatus.Text = oBatchHeader.CONFIRM_TRF == "Y" ? "Completed" : (oBatchHeader.CONFIRM_TRF.Trim() == "" ? "Unprocessed" : "Incompleted");
                }
                else
                {
                    #region LoadTxferLedgerInfo();
                    var oLedgerHeader = ctx.InvtLedgerHeader.Find(this.TxferId);
                    if (oLedgerHeader != null)
                    {
                        txtTxNumber.Text = oLedgerHeader.TxNumber;
                        txtTxType.Text   = oLedgerHeader.TxType;

                        cboFromLocation.SelectedValue = oLedgerHeader.WorkplaceId;
                        cboToLocation.SelectedValue   = oLedgerHeader.VsLocationId;
                        dtpTxDate.Value = oLedgerHeader.TxDate.Value;

                        txtLatestConfirmedOn.Text = DateTimeHelper.DateTimeToString(oLedgerHeader.CONFIRM_TRF_LASTUPDATE.Value, false);
                        txtLatestConfirmedBy.Text = oLedgerHeader.CONFIRM_TRF_LASTUSER;

                        txtRecordStatus.Text = string.Format(txtRecordStatus.Text, oLedgerHeader.TxType);
                    }
                    #endregion

                    #region LoadTxferFepInfo();
                    var oFepHeader = ctx.FepBatchHeader.Find(this.TxferId);
                    if (oFepHeader != null)
                    {
                        txtTxNumber.Text = oFepHeader.TxNumber;
                        txtTxType.Text   = oFepHeader.TxType;

                        cboFromLocation.SelectedValue = WorkplaceEx.GetWorkplaceIdByCode(oFepHeader.SHOP);
                        cboToLocation.SelectedValue   = WorkplaceEx.GetWorkplaceIdByCode(oFepHeader.FTSHOP);
                        dtpTxDate.Value = oFepHeader.TxDate.Value;

                        txtLatestConfirmedOn.Text = DateTimeHelper.DateTimeToString(oFepHeader.CONFIRM_TRF_LASTUPDATE.Value, false);
                        txtLatestConfirmedBy.Text = oFepHeader.CONFIRM_TRF_LASTUSER;

                        txtRecordStatus.Text = string.Format(txtRecordStatus.Text, oFepHeader.TxType);
                    }
                    #endregion
                }
            }

            BindTxferDetailsInfo();
            CalcTotal();
        }
Esempio n. 17
0
 private void FillToLocationList()
 {
     WorkplaceEx.LoadCombo(ref cboToLocation, "WorkplaceCode", false);
     cboToLocation.SelectedIndex = cboToLocation.Items.Count - 1;
 }
Esempio n. 18
0
 private void FillFromLocationList()
 {
     WorkplaceEx.LoadCombo(ref cboFromLocation, "WorkplaceCode", false);
 }
Esempio n. 19
0
        private void FillFromList()
        {
            string sql = "NatureId = '" + WorkplaceNatureEx.GetNatureIdeByCode("2").ToString() + "'";

            WorkplaceEx.LoadCombo(ref cboFromWorkplace, "WorkplaceCode", false, false, string.Empty, sql);
        }
Esempio n. 20
0
 private void FillVsLocation()
 {
     WorkplaceEx.LoadCombo(ref cboVsLocation, "WorkplaceCode", false);
 }
 private void LoadWorkplaceList()
 {
     WorkplaceEx.LoadCombo(ref cboWorkplace, "WorkplaceCode", false);
 }
Esempio n. 22
0
        private int Import()
        {
            int result = 0;

            using (var ctx = new EF6.RT2020Entities())
            {
                using (var scope = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        for (int i = 0; i < md.Length; i++)
                        {
                            string txNumber = SystemInfoHelper.Settings.QueuingTxNumber(EnumHelper.TxType.TXF);

                            #region Guid headerId = ImportTxferHeader(md[i].Master as TxferTxtIEMaster, txNumber);
                            var master = md[i].Master as TxferTxtIEMaster;

                            var oHeader = new EF6.InvtBatchTXF_Header();
                            oHeader.HeaderId      = Guid.NewGuid();
                            oHeader.TxType        = EnumHelper.TxType.TXF.ToString();
                            oHeader.TxNumber      = txNumber;
                            oHeader.TxDate        = master.TxDate;
                            oHeader.TransferredOn = master.TxferDate;
                            oHeader.CompletedOn   = master.CompletionDate;
                            oHeader.FromLocation  = WorkplaceEx.GetWorkplaceIdByCode(master.FromLocation);
                            oHeader.ToLocation    = WorkplaceEx.GetWorkplaceIdByCode(master.ToLocation);
                            oHeader.StaffId       = StaffEx.GetStaffIdByStaffNumber(master.Operator);
                            oHeader.Status        = Convert.ToInt32(EnumHelper.Status.Draft.ToString("d"));
                            oHeader.Reference     = master.RefNumber;
                            oHeader.Remarks       = master.Remarks;

                            oHeader.CreatedBy  = ConfigHelper.CurrentUserId;
                            oHeader.CreatedOn  = DateTime.Now;
                            oHeader.ModifiedBy = ConfigHelper.CurrentUserId;
                            oHeader.ModifiedOn = DateTime.Now;

                            ctx.InvtBatchTXF_Header.Add(oHeader);
                            ctx.SaveChanges();

                            Guid headerId = oHeader.HeaderId;
                            #endregion

                            if (headerId != Guid.Empty)
                            {
                                lvImportedList.Items[i].Text = txNumber;

                                #region ImportTxferDetails(md[i].Details, headerId, txNumber);
                                object[] details = md[i].Details;

                                if (details != null)
                                {
                                    for (int j = 0; j < details.Length; j++)
                                    {
                                        TxferTxtIEDetails detail = details[j] as TxferTxtIEDetails;
                                        Guid prodId = GetProductId(detail);
                                        if (prodId != Guid.Empty)
                                        {
                                            var oDetail = new EF6.InvtBatchTXF_Details();
                                            oDetail.DetailsId      = Guid.NewGuid();
                                            oDetail.ProductId      = prodId;
                                            oDetail.HeaderId       = headerId;
                                            oDetail.LineNumber     = j + 1;
                                            oDetail.TxNumber       = txNumber;
                                            oDetail.TxType         = EnumHelper.TxType.TXF.ToString();
                                            oDetail.QtyConfirmed   = 0;
                                            oDetail.QtyHHT         = 0;
                                            oDetail.QtyManualInput = 0;
                                            oDetail.QtyReceived    = detail.TxferQty;
                                            oDetail.QtyRequested   = detail.RequiredQty;
                                            oDetail.Remarks        = detail.Remarks;

                                            ctx.InvtBatchTXF_Details.Add(oDetail);
                                            ctx.SaveChanges();
                                            result++;
                                        }
                                    }
                                }
                                #endregion

                                result++;
                            }
                        }

                        scope.Commit();
                    }
                    catch (Exception ex)
                    {
                        scope.Rollback();
                    }
                }
            }

            return(result);
        }
Esempio n. 23
0
 private void FillComboBox()
 {
     WorkplaceEx.LoadCombo(ref cmbFrom, "WorkplaceCode", false);
     WorkplaceEx.LoadCombo(ref cmbTo, "WorkplaceCode", false);
     cmbTo.SelectedIndex = cmbTo.Items.Count - 1;
 }
Esempio n. 24
0
        private void Save()
        {
            int  iCount  = 1;
            bool isValid = true;

            foreach (ListViewItem lvItem in lvPPCPacketList.Items)
            {
                if (lvItem.Checked)
                {
                    string   stktkNumber = string.Empty;
                    Guid     workplaceId = Guid.Empty;
                    DateTime uploadedOn  = DateTime.Now;
                    List <ImportDetailsInfo> detailAllList = new List <ImportDetailsInfo>();
                    decimal totalLine = 0, totalQty = 0, missingLine = 0, missingQty = 0;

                    this.CheckHHTLog(lvItem.SubItems[4].Text);

                    #region Load Header's detail info
                    FileHelperEngine <ImportHeaderInfo> headerInfoEngine = new FileHelperEngine <ImportHeaderInfo>();

                    headerInfoEngine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;

                    ImportHeaderInfo[] headerInfoList = headerInfoEngine.ReadFile(lvItem.SubItems[8].Text);

                    if (headerInfoEngine.ErrorManager.ErrorCount > 0)
                    {
                        headerInfoEngine.ErrorManager.SaveErrors(logFile);
                    }
                    #endregion

                    Utility.WriteLog("Date Create	 : "+ uploadedOn.ToString("dd/MM/yyyy HH:mm:ss"), logFile);
                    Utility.WriteLog("Session ID	 : "+ uploadedOn.ToString("yyyyMMdd-HHmmss") + "-" + iCount.ToString().PadLeft(3, '0'), logFile);
                    Utility.WriteLog("Upload Time	 : "+ uploadedOn.ToString("dd/MM/yyyy HH:mm:ss"), logFile);
                    Utility.WriteLog("HHT TRN#	 : "+ lvItem.SubItems[2].Text, logFile);
                    Utility.WriteLog("Location#	 : " + lvItem.SubItems[9].Text + " [Original]; " + lvItem.Text + " [Current]", logFile);
                    Utility.WriteLog("Stock Take#	 : "+ lvItem.SubItems[10].Text + " [Suggested]; " + lvItem.SubItems[1].Text + " [Current]", logFile);
                    Utility.WriteLog("Process Detail	 : Import Data", logFile);
                    Utility.WriteLog("Message :- ", logFile);
                    Utility.WriteLog("=> Checking Loc# ", logFile);

                    #region Check Workplace (Loc#)
                    using (var ctx = new EF6.RT2020Entities())
                    {
                        var wp = ctx.Workplace.Where(x => x.WorkplaceCode == lvItem.Text).AsNoTracking().FirstOrDefault();
                        if (wp != null)
                        {
                            if (wp.Retired)
                            {
                                Utility.WriteLog("	[ERROR] Loc# was retired ", logFile);
                                isValid = isValid & false;
                            }
                            else
                            {
                                Utility.WriteLog("	[OK] ", logFile);
                                workplaceId = wp.WorkplaceId;
                            }
                        }
                        else
                        {
                            Utility.WriteLog("	[ERROR] Loc# Not Found", logFile);
                            isValid = isValid & false;
                        }
                    }
                    #endregion

                    Utility.WriteLog("	RESULT : COMPLETED", logFile);
                    Utility.WriteLog("=> Import Packet File ", logFile);

                    #region Load details files
                    string[] packetFiles = Directory.GetFiles(tempDirectory, "DT_" + lvItem.SubItems[2].Text + "*", SearchOption.TopDirectoryOnly);
                    for (int i = 0; i < packetFiles.Length; i++)
                    {
                        Utility.WriteLog(@"	" + (i + 1).ToString() + @") Packet => " + Path.GetFileNameWithoutExtension(packetFiles[i]) + " [" + packetFiles[i] + "] ", logFile);
                    }
                    #endregion

                    Utility.WriteLog("	RESULT : COMPLETED", logFile);
                    Utility.WriteLog("=> Checking (Header) ", logFile);

                    stktkNumber = lvItem.SubItems[1].Text.Trim();

                    #region checking Header info
                    using (var ctx = new EF6.RT2020Entities())
                    {
                        var stktkHeader = ctx.StockTakeHeader.Where(x => x.TxNumber == lvItem.SubItems[1].Text.Trim()).FirstOrDefault();
                        if (stktkHeader != null)
                        {
                            if (!string.IsNullOrEmpty(stktkHeader.ADJNUM))
                            {
                                Utility.WriteLog("	[ERROR] The Stock Take Number was posted, cannot be used anymore. ", logFile);
                                isValid = isValid & false;
                            }
                            else if (!WorkplaceEx.GetWorkplaceCodeById(stktkHeader.WorkplaceId.Value).Equals(lvItem.Text.Trim()))
                            {
                                Utility.WriteLog("	[ERROR] The loc# in Stock Take Header must be as same as the selected one. ", logFile);
                                isValid = isValid & false;
                            }
                            else
                            {
                                //? Why compare the UploadedOn down to "seconds"
                                //string sql = "TxNumber = '" + lvItem.SubItems[1].Text.Trim() + "' AND HHTId = '" + lvItem.SubItems[4].Text + "' AND CONVERT(NVARCHAR(20), UploadedOn, 120) = '" + uploadedOn.ToString("yyyy-MM-dd HH:mm:ss") + "'";
                                var txNumber  = lvItem.SubItems[1].Text.Trim();
                                var hhtId     = lvItem.SubItems[4].Text;
                                var hhtHeader = ctx.StocktakeHeader_HHT.Where(x => x.TxNumber == txNumber && x.HHTId == hhtId && x.UploadedOn.Value.ToString("yyyy-MM-dd HH:mm:ss") == uploadedOn.ToString("yyyy-MM-dd HH:mm:ss")).FirstOrDefault();
                                if (hhtHeader != null)
                                {
                                    if (hhtHeader.PostedOn.Value.Year > 1900)
                                    {
                                        Utility.WriteLog("	[ERROR] The Stock Take (HHT) Number was posted, cannot be used anymore. ", logFile);
                                        isValid = isValid & false;
                                    }
                                    else
                                    {
                                        Utility.WriteLog("	[ERROR] The Stock Take (HHT) Number existed. ", logFile);
                                        isValid = isValid & false;
                                    }
                                }
                                else
                                {
                                    Utility.WriteLog("	[OK]  ", logFile);
                                }
                            }
                        }
                        else
                        {
                            Utility.WriteLog("	[OK]  ", logFile);
                        }
                    }
                    #endregion

                    Utility.WriteLog("=> Checking (Detail) ", logFile);
                    int iCountBarcode = 0;

                    #region checking details info
                    for (int iHeader = 0; iHeader < headerInfoList.Length; iHeader++)
                    {
                        ImportHeaderInfo headerInfo = headerInfoList[iHeader];

                        FileHelperEngine <ImportDetailsInfo> detailInfoEngine = new FileHelperEngine <ImportDetailsInfo>();

                        detailInfoEngine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;

                        string detailPacket = Path.Combine(tempDirectory, "DT_" + lvItem.SubItems[2].Text + "_" + headerInfo.ShelfId + ".TXT");
                        ImportDetailsInfo[] detailInfoList = detailInfoEngine.ReadFile(detailPacket);

                        if (headerInfoEngine.ErrorManager.ErrorCount > 0)
                        {
                            headerInfoEngine.ErrorManager.SaveErrors(logFile);
                        }

                        Utility.WriteLog("	=> Checking Shelf ("+ headerInfo.ShelfId + " - " + headerInfo.ShelfName + ")", logFile);

                        for (int iDetail = 0; iDetail < detailInfoList.Length; iDetail++)
                        {
                            ImportDetailsInfo detailInfo = detailInfoList[iDetail];
                            if (string.IsNullOrEmpty(detailInfo.Barcode))
                            {
                                iCountBarcode++;
                                missingQty += detailInfo.Qty;

                                Utility.WriteLog("	[ERROR] Barcode does not exist. ", logFile);
                            }
                            else
                            {
                                Guid productId = ProductBarcodeEx.GetProductIdByBarcode(detailInfo.Barcode);

                                if (productId == System.Guid.Empty)
                                {
                                    iCountBarcode++;
                                    missingQty += detailInfo.Qty;

                                    Utility.WriteLog("	[ERROR] Barcode ("+ detailInfo.Barcode + ") does not exist. ", logFile);
                                }
                                else
                                {
                                    if (detailInfo.Qty <= 0)
                                    {
                                        Utility.WriteLog("	[ERROR] Barcode ("+ detailInfo.Barcode + ") QTY <= 0 ", logFile);
                                        isValid = isValid & false;
                                    }
                                    else
                                    {
                                        Utility.WriteLog("	[OK] Barcode ("+ detailInfo.Barcode + ") QTY > 0 ", logFile);
                                    }
                                }
                            }

                            totalLine++;
                            totalQty += detailInfo.Qty;

                            detailAllList.Add(detailInfo);
                        }

                        missingLine += iCountBarcode;

                        if (iCountBarcode > 0)
                        {
                            Utility.WriteLog("	[ERROR] Details of Shelf ("+ headerInfo.ShelfId + " - " + headerInfo.ShelfName + ") has " + iCountBarcode.ToString() + " empty barcode.", logFile);
                        }
                        else
                        {
                            Utility.WriteLog("	[OK] Details of Shelf ("+ headerInfo.ShelfId + " - " + headerInfo.ShelfName + ") has 0 empty barcode.", logFile);
                        }
                    }
                    #endregion

                    Utility.WriteLog("	RESULT : COMPLETED", logFile);
                    Utility.WriteLog("=> Save Packet", logFile);

                    #region isValid: wrapping up
                    if (isValid)
                    {
                        if (stktkNumber.Trim().Length == 0)
                        {
                            stktkNumber = SystemInfoHelper.Settings.QueuingTxNumber(EnumHelper.TxType.STK);
                        }

                        Utility.WriteLog("	[OK] System Queue ", logFile);

                        if (stktkNumber.Length > 0)
                        {
                            // Stock take header
                            System.Guid stktkheaderId = CreateStockTakeHeader(stktkNumber.Trim(), workplaceId);
                            Utility.WriteLog("	[OK] Create Worksheet (Stock Take - Header)", logFile);

                            // Stock take details
                            if (stktkheaderId != System.Guid.Empty)
                            {
                                CreatedStockTakeDetail(stktkheaderId, stktkNumber.Trim(), detailAllList, workplaceId, uploadedOn);
                            }
                            Utility.WriteLog("	[OK] Create Worksheet (Stock Take - Detail)", logFile);

                            // Stock take header (HHT)
                            System.Guid hhtHeaderId = CreateStockTakeHHTHeader(stktkNumber.Trim(), lvItem.SubItems[4].Text, uploadedOn, workplaceId, lvItem.SubItems[2].Text,
                                                                               totalLine, totalQty, missingLine, missingQty);
                            Utility.WriteLog("	[OK] Create Worksheet (HHT Data Review - Header)", logFile);

                            // Stock take details (HHT)
                            if (hhtHeaderId != System.Guid.Empty)
                            {
                                CreateStockTakeHHTDetails(hhtHeaderId, stktkNumber.Trim(), lvItem.SubItems[4].Text, uploadedOn, detailAllList, lvItem.SubItems[2].Text);
                            }

                            Utility.WriteLog("	[OK] Create Worksheet (HHT Data Review - Detail)", logFile);
                            Utility.WriteLog("	[OK] Barcode Matching", logFile);
                            Utility.WriteLog("	[OK] Counting Missing Data", logFile);
                            Utility.WriteLog("	RESULT : COMPLETED", logFile);

                            // Backup text files
                            if (!Directory.Exists(backupDirectory))
                            {
                                Directory.CreateDirectory(backupDirectory);
                            }

                            // Header file
                            File.Move(lvItem.SubItems[8].Text, Path.Combine(backupDirectory, Path.GetFileName(lvItem.SubItems[8].Text)));

                            for (int i = 0; i < packetFiles.Length; i++)
                            {
                                File.Move(packetFiles[i], Path.Combine(backupDirectory, Path.GetFileName(packetFiles[i])));
                            }

                            Utility.WriteLog("=> Backup Data	RESULT : COMPLETED", logFile);
                        }
                    }
                    #endregion

                    iCount++;
                }
            }
        }
Esempio n. 25
0
        private void CreateADJTx(ListViewItem listItem)
        {
            using (var ctx = new EF6.RT2020Entities())
            {
                using (var scope = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        Guid headerId = Guid.Empty;
                        if (Guid.TryParse(listItem.Text, out headerId))
                        {
                            var oBatchHeader = ctx.InvtBatchADJ_Header.Find(headerId);
                            if (oBatchHeader != null)
                            {
                                // Update Product Info
                                #region UpdateProduct(oBatchHeader.HeaderId, oBatchHeader.WorkplaceId);
                                Guid txHeaderId  = oBatchHeader.HeaderId;
                                Guid workplaceId = oBatchHeader.WorkplaceId;

                                var detailsList = ctx.InvtBatchADJ_Details.Where(x => x.HeaderId == txHeaderId);
                                foreach (var item in detailsList)
                                {
                                    Guid    productId = item.ProductId;
                                    decimal qty       = item.Qty.Value;

                                    #region UpdateProductCurrentSummary(item.ProductId, item.Qty.Value);
                                    var currProd = ctx.ProductCurrentSummary.Where(x => x.ProductId == productId).FirstOrDefault();
                                    if (currProd == null)
                                    {
                                        currProd = new EF6.ProductCurrentSummary();
                                        currProd.CurrentSummaryId = Guid.NewGuid();
                                        currProd.ProductId        = productId;
                                        ctx.ProductCurrentSummary.Add(currProd);
                                    }
                                    currProd.CDQTY += qty;
                                    #endregion

                                    #region UpdateProductQty(item.ProductId, workplaceId, item.Qty.Value);
                                    var wpProd = ctx.ProductWorkplace.Where(x => x.ProductId == productId && x.WorkplaceId == workplaceId).FirstOrDefault();
                                    if (wpProd == null)
                                    {
                                        wpProd = new EF6.ProductWorkplace();
                                        wpProd.ProductWorkplaceId = Guid.NewGuid();
                                        wpProd.ProductId          = productId;
                                        wpProd.WorkplaceId        = workplaceId;

                                        ctx.ProductWorkplace.Add(wpProd);
                                    }
                                    wpProd.CDQTY += qty;
                                    #endregion

                                    ctx.SaveChanges();
                                }
                                #endregion

                                // Create ADJ SubLedger
                                string txNumber_SubLedger = oBatchHeader.TxNumber;
                                #region Guid subLedgerHeaderId = CreateADJSubLedgerHeader(txNumber_SubLedger, oBatchHeader.TxDate, oBatchHeader.WorkplaceId, oBatchHeader.StaffId, oBatchHeader.Remarks, oBatchHeader.Reference + "\t" + oBatchHeader.TxNumber);
                                string   txnumber = txNumber_SubLedger;
                                DateTime txDate   = oBatchHeader.TxDate.Value;
                                //Guid workplaceId = oBatchHeader.WorkplaceId;
                                Guid   staffId   = oBatchHeader.StaffId;
                                string remarks   = oBatchHeader.Remarks;
                                string reference = oBatchHeader.Reference + "\t" + oBatchHeader.TxNumber;

                                var oSubADJ = new EF6.InvtSubLedgerADJ_Header();
                                oSubADJ.HeaderId    = Guid.NewGuid();
                                oSubADJ.TxNumber    = txnumber;
                                oSubADJ.TxType      = EnumHelper.TxType.ADJ.ToString();
                                oSubADJ.WorkplaceId = workplaceId;
                                oSubADJ.TxDate      = txDate;
                                oSubADJ.Reference   = reference;
                                oSubADJ.Remarks     = remarks;
                                oSubADJ.StaffId     = staffId;
                                oSubADJ.Status      = Convert.ToInt32(EnumHelper.Status.Active.ToString("d"));

                                oSubADJ.CreatedBy  = ConfigHelper.CurrentUserId;
                                oSubADJ.CreatedOn  = DateTime.Now;
                                oSubADJ.ModifiedBy = ConfigHelper.CurrentUserId;
                                oSubADJ.ModifiedOn = DateTime.Now;

                                ctx.InvtSubLedgerADJ_Header.Add(oSubADJ);
                                ctx.SaveChanges();

                                Guid subLedgerHeaderId = oSubADJ.HeaderId;
                                #endregion

                                #region CreateADJSubLedgerDetail(txNumber_SubLedger, oBatchHeader.HeaderId, subLedgerHeaderId);
                                //string txnumber = txNumber_SubLedger;
                                Guid batchHeaderId = oBatchHeader.HeaderId;

                                decimal  ttlAmt        = 0;
                                string   sql           = "HeaderId = '" + batchHeaderId.ToString() + "'";
                                string[] orderBy       = new string[] { "LineNumber" };
                                var      oBatchDetails = ctx.InvtBatchADJ_Details.Where(x => x.HeaderId == batchHeaderId).OrderBy(x => x.LineNumber);
                                foreach (var oBDetail in oBatchDetails)
                                {
                                    var oSubLedgerDetail = new EF6.InvtSubLedgerADJ_Details();
                                    oSubLedgerDetail.DetailsId   = Guid.NewGuid();
                                    oSubLedgerDetail.HeaderId    = subLedgerHeaderId;
                                    oSubLedgerDetail.LineNumber  = oBDetail.LineNumber.Value;
                                    oSubLedgerDetail.ProductId   = oBDetail.ProductId;
                                    oSubLedgerDetail.Qty         = oBDetail.Qty.Value;
                                    oSubLedgerDetail.TxNumber    = txnumber;
                                    oSubLedgerDetail.TxType      = EnumHelper.TxType.ADJ.ToString();
                                    oSubLedgerDetail.AverageCost = oBDetail.AverageCost.Value;
                                    oSubLedgerDetail.ReasonCode  = oBDetail.ReasonCode;
                                    oSubLedgerDetail.Remarks     = oBDetail.Remarks;

                                    ctx.InvtSubLedgerADJ_Details.Add(oSubLedgerDetail);

                                    ttlAmt += oSubLedgerDetail.Qty.Value * oSubLedgerDetail.AverageCost.Value;
                                }

                                var oSubLedgerHeader = ctx.InvtSubLedgerADJ_Header.Find(subLedgerHeaderId);
                                if (oSubLedgerHeader != null)
                                {
                                    oSubLedgerHeader.TotalAmount = ttlAmt;

                                    oSubLedgerHeader.ModifiedOn = DateTime.Now;
                                    oSubLedgerHeader.ModifiedBy = ConfigHelper.CurrentUserId;
                                }
                                ctx.SaveChanges();
                                #endregion

                                // Create Ledger for TxType 'ADJ'
                                string txNumber_Ledger = oBatchHeader.TxNumber;
                                #region Guid ledgerHeaderId = CreateLedgerHeader(txNumber_Ledger, oBatchHeader.TxDate, subLedgerHeaderId, oBatchHeader.WorkplaceId, oBatchHeader.StaffId, oBatchHeader.Reference + "\t" + txNumber_SubLedger, oBatchHeader.Remarks);
                                //string txnumber = txNumber_Ledger;
                                //DateTime txDate = oBatchHeader.TxDate.Value;
                                //Guid subLedgerHeaderId = subLedgerHeaderId;
                                //Guid workplaceId = oBatchHeader.WorkplaceId;
                                //Guid staffId = oBatchHeader.StaffId;
                                //string reference = oBatchHeader.Reference + "\t" + txNumber_SubLedger;
                                //string remarks = oBatchHeader.Remarks;

                                var oLedgerHeader = new EF6.InvtLedgerHeader();
                                oLedgerHeader.HeaderId          = Guid.NewGuid();
                                oLedgerHeader.TxNumber          = txnumber;
                                oLedgerHeader.TxType            = EnumHelper.TxType.ADJ.ToString();
                                oLedgerHeader.TxDate            = txDate;
                                oLedgerHeader.SubLedgerHeaderId = subLedgerHeaderId;
                                oLedgerHeader.WorkplaceId       = workplaceId;
                                oLedgerHeader.StaffId           = staffId;
                                oLedgerHeader.Reference         = reference;
                                oLedgerHeader.Remarks           = remarks;
                                oLedgerHeader.Status            = Convert.ToInt32(EnumHelper.Status.Active.ToString("d"));
                                oLedgerHeader.CreatedBy         = ConfigHelper.CurrentUserId;
                                oLedgerHeader.CreatedOn         = DateTime.Now;
                                oLedgerHeader.ModifiedBy        = ConfigHelper.CurrentUserId;
                                oLedgerHeader.ModifiedOn        = DateTime.Now;

                                ctx.InvtLedgerHeader.Add(oLedgerHeader);
                                ctx.SaveChanges();

                                Guid ledgerHeaderId = oLedgerHeader.HeaderId;
                                #endregion

                                #region CreateLedgerDetails(txNumber_Ledger, subLedgerHeaderId, ledgerHeaderId, oBatchHeader);
                                //string txnumber = txNumber_Ledger;
                                //Guid subledgerHeaderId = subLedgerHeaderId;
                                //Guid ledgerHeaderId = ledgerHeaderId;
                                //InvtBatchADJ_Header oBatchHeader

                                //string sql = "HeaderId = '" + subledgerHeaderId.ToString() + "'";
                                //string[] orderBy = new string[] { "LineNumber" };

                                var oSubLedgerDetails = ctx.InvtSubLedgerADJ_Details.Where(x => x.HeaderId == subLedgerHeaderId).OrderBy(x => x.LineNumber);
                                foreach (var oSDetail in oSubLedgerDetails)
                                {
                                    var oLedgerDetail = new EF6.InvtLedgerDetails();
                                    oLedgerDetail.DetailsId          = Guid.NewGuid();
                                    oLedgerDetail.HeaderId           = ledgerHeaderId;
                                    oLedgerDetail.SubLedgerDetailsId = oSDetail.DetailsId;
                                    oLedgerDetail.LineNumber         = oSDetail.LineNumber.Value;
                                    oLedgerDetail.ProductId          = oSDetail.ProductId;
                                    oLedgerDetail.Qty          = oSDetail.Qty.Value;
                                    oLedgerDetail.TxNumber     = txnumber;
                                    oLedgerDetail.TxType       = EnumHelper.TxType.ADJ.ToString();
                                    oLedgerDetail.TxDate       = oBatchHeader.TxDate.Value;
                                    oLedgerDetail.Amount       = oLedgerDetail.Qty * oLedgerDetail.AverageCost;
                                    oLedgerDetail.Notes        = string.Empty;
                                    oLedgerDetail.SerialNumber = string.Empty;
                                    oLedgerDetail.SHOP         = WorkplaceEx.GetWorkplaceCodeById(oBatchHeader.WorkplaceId);
                                    oLedgerDetail.OPERATOR     = StaffEx.GetStaffNumberById(oBatchHeader.StaffId);

                                    // Product Info
                                    var oItem = ctx.Product.Find(oSDetail.ProductId);
                                    if (oItem != null)
                                    {
                                        oLedgerDetail.BasicPrice  = oItem.RetailPrice.Value;
                                        oLedgerDetail.UnitAmount  = ProductCurrentSummaryEx.GetAverageCode(oItem.ProductId);
                                        oLedgerDetail.Discount    = oItem.NormalDiscount;
                                        oLedgerDetail.Amount      = oLedgerDetail.UnitAmount * oLedgerDetail.Qty;
                                        oLedgerDetail.AverageCost = ProductCurrentSummaryEx.GetAverageCode(oItem.ProductId);

                                        var priceTypeId = ProductPriceTypeEx.GetIdByPriceType(ProductHelper.Prices.VPRC.ToString());
                                        //sql = "ProductId = '" + oSDetail.ProductId.ToString() + "' AND PriceTypeId = '" + priceTypeId.ToString() + "'";

                                        var oPrice = ctx.ProductPrice.Where(x => x.ProductId == oSDetail.ProductId && x.PriceTypeId == priceTypeId).FirstOrDefault();
                                        if (oPrice != null)
                                        {
                                            oLedgerDetail.VendorRef = oPrice.CurrencyCode;
                                        }
                                    }
                                    ctx.InvtLedgerDetails.Add(oLedgerDetail);

                                    var oLedgerHeader2 = ctx.InvtLedgerHeader.Find(ledgerHeaderId);
                                    if (oLedgerHeader2 != null)
                                    {
                                        oLedgerHeader2.TotalAmount += oLedgerDetail.Amount;
                                    }

                                    ctx.SaveChanges();
                                }
                                #endregion

                                oBatchHeader.PostedBy   = ConfigHelper.CurrentUserId;
                                oBatchHeader.PostedOn   = DateTime.Now;
                                oBatchHeader.ModifiedBy = ConfigHelper.CurrentUserId;
                                oBatchHeader.ModifiedOn = DateTime.Now;
                                ctx.SaveChanges();

                                #region ClearBatchTransaction(oBatchHeader);
                                string query      = "HeaderId = '" + oBatchHeader.HeaderId.ToString() + "'";
                                var    detailList = ctx.InvtBatchADJ_Details.Where(x => x.HeaderId == oBatchHeader.HeaderId);
                                foreach (var detail in detailList)
                                {
                                    ctx.InvtBatchADJ_Details.Remove(detail);
                                }

                                ctx.InvtBatchADJ_Header.Remove(oBatchHeader);
                                ctx.SaveChanges();
                                #endregion
                            }
                        }
                        scope.Commit();
                    }
                    catch (Exception ex)
                    {
                        scope.Rollback();
                    }
                }
            }
        }
Esempio n. 26
0
        private int Import()
        {
            int result = 0;

            using (var ctx = new EF6.RT2020Entities())
            {
                using (var scope = ctx.Database.BeginTransaction())
                {
                    try
                    {
                        for (int i = 0; i < md.Length; i++)
                        {
                            string txNumber = SystemInfoHelper.Settings.QueuingTxNumber(EnumHelper.TxType.CAP);

                            #region Guid headerId = ImportCAPHeader(md[i].Master as CAPTxtIEMaster, txNumber);
                            CAPTxtIEMaster master = md[i].Master as CAPTxtIEMaster;

                            var oHeader = new EF6.InvtBatchCAP_Header();
                            oHeader.HeaderId     = Guid.NewGuid();
                            oHeader.TxType       = EnumHelper.TxType.CAP.ToString();
                            oHeader.TxNumber     = txNumber;
                            oHeader.TxDate       = master.RecvDate;
                            oHeader.WorkplaceId  = WorkplaceEx.GetWorkplaceIdByCode(master.Location);
                            oHeader.StaffId      = StaffEx.GetStaffIdByStaffNumber(master.Operator);
                            oHeader.SupplierId   = SupplierEx.GetSupplierIdBySupplierCode(master.Supplier);
                            oHeader.Status       = Convert.ToInt32(EnumHelper.Status.Draft.ToString("d"));
                            oHeader.Reference    = master.RefNumber;
                            oHeader.Remarks      = master.Remarks;
                            oHeader.CurrencyCode = "HKD";
                            oHeader.ExchangeRate = (decimal)1;

                            oHeader.CreatedBy  = ConfigHelper.CurrentUserId;
                            oHeader.CreatedOn  = DateTime.Now;
                            oHeader.ModifiedBy = ConfigHelper.CurrentUserId;
                            oHeader.ModifiedOn = DateTime.Now;

                            ctx.InvtBatchCAP_Header.Add(oHeader);
                            ctx.SaveChanges();

                            Guid headerId = oHeader.HeaderId;
                            #endregion

                            decimal ttlAmt = 0;
                            #region decimal ttlAmt = ImportCAPDetails(md[i].Details, headerId, txNumber);
                            object[] details = md[i].Details;
                            if (details != null)
                            {
                                for (int j = 0; j < details.Length; j++)
                                {
                                    CAPTxtIEDetails detail = details[j] as CAPTxtIEDetails;
                                    Guid            prodId = GetProductId(detail);

                                    if (prodId != Guid.Empty)
                                    {
                                        var oDetail = new EF6.InvtBatchCAP_Details();
                                        oDetail.DetailsId  = Guid.NewGuid();
                                        oDetail.ProductId  = prodId;
                                        oDetail.HeaderId   = headerId;
                                        oDetail.LineNumber = j + 1;
                                        oDetail.TxNumber   = txNumber;
                                        oDetail.TxType     = EnumHelper.TxType.CAP.ToString();
                                        oDetail.Qty        = detail.ReceivedQty;
                                        oDetail.UnitAmount = detail.ReceivedUnitAmount;
                                        oDetail.UnitAmountInForeignCurrency = detail.ReceivedUnitAmount;

                                        ctx.InvtBatchCAP_Details.Add(oDetail);
                                        ctx.SaveChanges();

                                        ttlAmt += oDetail.Qty.Value * oDetail.UnitAmount.Value;
                                    }
                                    else
                                    {
                                        string skippedProduct = String.Format("?{0} {1} {2} {3}",
                                                                              detail.StockCode, detail.Appendix1, detail.Appendix2, detail.Appendix3);
                                        skippedList.Add(skippedProduct);
                                    }
                                }
                            }
                            #endregion

                            oHeader = ctx.InvtBatchCAP_Header.Find(headerId);
                            if (oHeader != null)
                            {
                                oHeader.TotalAmount = ttlAmt;
                                ctx.SaveChanges();

                                UpdateListView(i, txNumber);

                                skippedList.Clear();
                            }

                            result++;
                        }
                        scope.Commit();
                    }
                    catch (Exception ex)
                    {
                        scope.Rollback();
                    }
                }
            }

            return(result);
        }
Esempio n. 27
0
 /// <summary>
 /// Fills the location list.
 /// </summary>
 private void FillLocationList()
 {
     WorkplaceEx.LoadCombo(ref this.cboLocation, "WorkplaceCode", false);
 }