Пример #1
0
        private void InitialPos()
        {
            dgvSelectItem.DataSource = null;

            bsPosDetail.DataSource  = null;
            dgvPosDetail.DataSource = null;

            //1.取出最新的流水号,新增并保存一张未结算pos单
            SupplyChainPos fscp = SupplyChainPos.New;

            fscp.SerialNumber = BllSupplyChainPos.GetPosSN();
            //fscp.SerialNumber = "00000000000";
            fscp.PosDateTime          = DateTime.Now;
            fscp.Cashier              = UserStatics.ChineseName;
            fscp.Quantity             = 0;
            fscp.PaidQuantity         = 0;
            fscp.UnPaidQuantity       = 0;
            fscp.GiftQuantity         = 0;
            fscp.PosAmount            = 0;
            fscp.UnPayAmount          = 0;
            fscp.PayInAmount          = 0;
            fscp.PayByStoredValueCard = 0;
            fscp.PayByCash            = 0;
            fscp.PayByCoupons         = 0;
            fscp.PayByBank            = 0;
            fscp.PosProfit            = 0;
            fscp.IsAllPaid            = false;
            fscp.IsHolded             = false;
            fscp.Save();
            PosId = fscp.Id;

            FrmAddEditBindComboBoxText.BindObjectToControls(fscp, panelTop);
            FrmAddEditBindComboBoxText.BindObjectToControls(fscp, panelBottom);
        }
Пример #2
0
        private void tbSelectItem_KeyDown(object sender, KeyEventArgs e)
        {
            //选好单品,并且回车
            if (e.KeyCode == Keys.Enter && tbSelectItem.Text != "")
            {
                SupplyChainPos       scp  = SupplyChainPos.FindById(PosId);
                SupplyChainPosDetail scpd = SupplyChainPosDetail.New;
                BaseInfoMaterial     bim  = BaseInfoMaterial.FindById(MaterialId);
                scpd.IsPaid           = false;
                scpd.MaterialId       = bim.Id;
                scpd.MaterialName     = bim.Name;
                scpd.MaterialCategory = bim.Category;
                scpd.UnitName         = bim.SaleUnitName;
                if (scp.MemberId != 0)
                {
                    scpd.UnitPrice = bim.MemberPrice;
                }
                else
                {
                    scpd.UnitPrice = bim.RetailPrice;
                }
                scpd.Quantity      = 1;
                scpd.Discount      = 0;
                scpd.Amount        = scpd.UnitPrice * scpd.Quantity;
                scpd.IsReturns     = false;
                scpd.IsGift        = false;
                scpd.OrderDateTime = DateTime.Now;
                scpd.Save();
                scp.SupplyChainPosDetails.Add(scpd);
                scp.Quantity       += 1;
                scp.UnPaidQuantity += 1;
                scp.UnPayAmount    += scpd.Amount;
                scp.PosAmount      += scpd.Amount;
                scp.Cashier         = UserStatics.ChineseName;
                scp.Save();
                bim.ConvQuantity -= 1;
                bim.InvQuantity   = bim.ConvQuantity / bim.UnitConvValue;
                bim.Save();

                FrmAddEditBindComboBoxText.BindObjectToControls(scp, panelBottom);

                TableForPosDetail = BllSupplyChainPos.GetPosDetail(PosId);
                ReloadDgvPosDetail();
                foreach (DataGridViewRow row in dgvPosDetail.Rows)
                {
                    row.Selected = true;
                }
                tbSelectItem.Text = "";
                ctUnderPay.Text   = scp.UnPayAmount.ToString();
            }
            if (e.KeyCode == Keys.Down)
            {
                bsSelectItem.MoveNext();
            }
            if (e.KeyCode == Keys.Up)
            {
                bsSelectItem.MovePrevious();
            }
        }
Пример #3
0
        private void PayAllDue()
        {
            SupplyChainPos       scp = SupplyChainPos.FindById(PosId);
            SupplyChainPosDetail scpd;

            //1.遍历表格,取出未付和非赠品,设置为已付
            //2.将pos主表相关项填好,并设为已结
            //3.区分保存储值卡、实付等数据,方便以后统计。
            foreach (DataGridViewRow row in dgvPosDetail.Rows)
            {
                if (row.Selected || (bool)row.Cells["是否已付"].Value == false ||
                    (bool)row.Cells["是否退货"].Value == false ||
                    (bool)row.Cells["是否赠品"].Value == false)
                {
                    scpd        = SupplyChainPosDetail.FindById(long.Parse(row.Cells["Id"].Value.ToString()));
                    scpd.IsPaid = true;
                    scpd.Save();
                    scp.UnPaidQuantity -= 1;
                    scp.UnPayAmount    -= scpd.Amount;
                    if (scp.UnPaidQuantity == 0 && scp.UnPayAmount == 0)
                    {
                        scp.IsAllPaid = true;
                    }
                    scp.Save();
                }
            }

            if (decimal.Parse(ctRemainingSum.Text) >= decimal.Parse(ctUnderPay.Text))
            {
                scp.PayByStoredValueCard = decimal.Parse(ctUnderPay.Text);
                scp.Save();
            }
            else if (decimal.Parse(ctRemainingSum.Text) + ctRealPay.Value == decimal.Parse(ctUnderPay.Text))
            {
                scp.PayByStoredValueCard = decimal.Parse(ctUnderPay.Text) - ctRealPay.Value;
                scp.PayInAmount          = ctRealPay.Value;
                scp.Save();
            }
        }
Пример #4
0
        private void FrmSupplyChainPos_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (PosId != 0)
            {
                SupplyChainPos fscp = SupplyChainPos.FindById(PosId);

                //1.如果当前单据没有子项,则删单
                //2.如果当前单据有子项,
                //2a.如果是挂单,则什么也不做
                //2b.如果不是挂单,则提示是否要保留,
                //2ba.如果保留则自动进入挂单
                //2bb.否则删除子项和当前单据
                if (fscp.Quantity == 0)
                {
                    fscp.Delete();
                }
                else if (fscp.Quantity != 0)
                {
                    if (fscp.IsHolded == false)
                    {
                        DialogResult dr = MessageBox.Show("当前单据未挂单,是否要保留", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

                        if (dr == DialogResult.OK)
                        {
                            fscp.IsHolded = true;
                            fscp.Save();
                        }
                        else
                        {
                            SupplyChainPosDetail.DeleteAll(CK.K["SupplyChainPosId"] == PosId);
                            fscp.SupplyChainPosDetails.Clear();
                            fscp.Delete();
                        }
                    }
                }
            }
        }