Exemplo n.º 1
0
        private void btnIssue_Click(object sender, EventArgs e)
        {
            float remainQty;
            float remainDefectQty;
            txtItemNo.Text = txtItemNo.Text.Trim();

            try
            {
                remainQty = float.Parse(txtQty.Text);
                remainDefectQty = float.Parse(txtDefectQty.Text);

                if (remainQty == 0 && remainDefectQty == 0)
                {
                    XtraMessageBox.Show("请输入正确的良品数或不良品数");
                    txtQty.SelectAll();
                    return;
                }

                if (remainQty > float.Parse(txtCanShipQty.Text ) || remainDefectQty > float.Parse(txtCanShipDefectQty.Text))
                {
                    XtraMessageBox.Show("输入的良品数或不良品数不能大于可派单数");
                    txtQty.SelectAll();
                    return;
                }
            }
            catch
            {
                XtraMessageBox.Show("请输入正确的良品数或不良品数");
                txtQty.SelectAll();
                return;
            }

            uow = new UnitOfWork();
            XPCollection<SubPurchOrderLine> poLines = new XPCollection<SubPurchOrderLine>(uow);
            SortingCollection sortProps;
            sortProps = new SortingCollection(null);
            sortProps.Add(new SortProperty("NeedDate", SortingDirection.Ascending));
            poLines.Criteria = CriteriaOperator.Parse(string.Format("OrderStatus == '{0}' AND SubItem.ItemNo = '{1}'", SubPurchOrderLine.PurchOrderStatus.Active, txtItemNo.Text));
            poLines.Sorting = sortProps;

            poReceives = new List<SubPurchOrderReceive>();
            float poBal = 0;

            uow.BeginTransaction();

            foreach (SubPurchOrderLine poLine in poLines)
            {
                SubPurchOrderReceive poReceive = new SubPurchOrderReceive(uow);
                poReceive.PurchOrderLine = poLine;
                poBal = poLine.BalQty;

                if (poBal > remainQty)
                {
                    poReceive.Qty = remainQty;
                    poBal = poBal - remainQty;
                    remainQty = 0;
                }
                else
                {
                    poReceive.Qty = poBal;
                    remainQty = remainQty - poBal;
                    poBal = 0;
                }

                if (poBal > remainDefectQty)
                {
                    poReceive.DefectQty = remainDefectQty;
                    poBal = poBal - remainDefectQty;
                    remainDefectQty = 0;
                }
                else
                {
                    poReceive.DefectQty = poBal;
                    remainDefectQty = remainDefectQty - poBal;
                    poBal = 0;
                }

                poReceive.Save();
                poReceive.Post();
                poReceives.Add(poReceive);

                if (remainQty == 0 && remainDefectQty == 0)
                    break;
            }

            uow.CommitChanges();
            txtRemainQty.Text = remainQty.ToString();
            txtRemainDefectQty.Text = remainDefectQty.ToString();
            gridPurchOrderReceive.DataSource = poReceives;

            btnPrint.Enabled = true;
        }
Exemplo n.º 2
0
        private void btnCreateLostQty_Execute(object sender, SimpleActionExecuteEventArgs e)
        {
            if (View.CurrentObject == null)
            {
                XtraMessageBox.Show("����ѡȡ���۵� !!", "ע��", System.Windows.Forms.MessageBoxButtons.OK);
                return;
            }

            SubSalesOrderLine soLine = (SubSalesOrderLine)View.CurrentObject;

            float canShipLostQty = soLine.Item.CanShipLostQty;
            float actualLostQty;

            if (canShipLostQty == 0)
            {
                XtraMessageBox.Show(string.Format("����ѡ�IJ�Ʒ {0} û��δ֪ͨ�˿͵���ʧ��!!", soLine.Item.ItemNo ), "����");
                return;
            }

            try
            {
                actualLostQty = float.Parse(Microsoft.VisualBasic.Interaction.InputBox(string.Format("�����������ʧ��Ϊ{0}. \n��������Ҫ����ʧ�� !!!", canShipLostQty), "������ʧ��", "", 0, 0));
            }
            catch
            {
                XtraMessageBox.Show("������ʧ������!!", "����");
                return;
            }

            if (actualLostQty == 0)
            {
                XtraMessageBox.Show("������ʧ������Ϊ 0. ", "����");
                return;
            }

            if (actualLostQty > canShipLostQty)
            {
                XtraMessageBox.Show(string.Format("������ʧ�� {0} ���������������ʧ�� {1}", actualLostQty, canShipLostQty ), "����");
                return;
            }

            if (actualLostQty < 0)
            {
                XtraMessageBox.Show(string.Format("������ʧ�� {0} ����С�� 0. ", actualLostQty), "����");
                return;

                /*
                DialogResult result = XtraMessageBox.Show(string.Format("������ {0}, �����Ƿ�Ҫ�Գ���ǰ�����ʧ�� ?", actualLostQty ), "ע�� !!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

                if (result == DialogResult.No)
                {
                    XtraMessageBox.Show("���Գ���ǰ�����ʧ����, �������븺�� !!", "����");
                    return;
                }

                if (soLine.LostQty + actualLostQty < 0)
                {
                    XtraMessageBox.Show(string.Format("�������ʧ�� {0} ������ǰ�����ʧ�� {1}!!", actualLostQty, soLine.LostQty), "����");
                    return;
                }
                 */
            }

            UnitOfWork uow = (UnitOfWork)(((XPObjectSpace)View.ObjectSpace).Session);

            XPCollection<SubPurchOrderLine> poLines = new XPCollection<SubPurchOrderLine>(uow);
            SortingCollection sortProps;
            sortProps = new SortingCollection(null);
            sortProps.Add(new SortProperty("NeedDate", SortingDirection.Ascending));
            poLines.Criteria = CriteriaOperator.Parse(string.Format("OrderStatus == '{0}' AND SubItem.ItemNo == '{1}' AND PurchOrderLineType == '{2}' ",
                                                    SubPurchOrderLine.PurchOrderStatus.Active, soLine.Item.ItemNo,SubPurchOrderLine.OrderType.Normal ));
            poLines.Sorting = sortProps;

            float poBal = 0;

            for (int i = 0; i < poLines.Count; i++)
            {
                SubPurchOrderLine poLine = poLines[i];
                poBal = poLine.BalQty;

                SubPurchOrderReceive poReceive = new SubPurchOrderReceive(uow);

                poReceive.Date = DateTime.Now;
                poReceive.SalesOrderLine = soLine;
                poReceive.PurchOrderLine = poLine;

                if (actualLostQty <= poBal)
                {
                    poReceive.LostQty = actualLostQty;
                    poBal = poBal - actualLostQty;
                    actualLostQty = 0;
                }
                else
                {
                    poReceive.LostQty = poBal;
                    actualLostQty = actualLostQty - poBal;
                }

                poReceive.Save();
                poReceive.Post();

                if (actualLostQty == 0)
                    break;

            }

            uow.CommitChanges();

            soLine.UpdateQty();
            soLine.Save();

            uow.CommitChanges();

            View.ObjectSpace.Refresh();
        }
Exemplo n.º 3
0
        private void btnSubPurchOrderReceive_Click(object sender, EventArgs e)
        {
            if (InitExcel("SubPurchOrderReceive") == false)
                return;

            UnitOfWork uow = new UnitOfWork();
            int row = 2;
            uow.BeginTransaction();

            while (ExcelHelper.GetCellStringValue(xlSht, row, 1) != "")
            {
                SubPurchOrderLine poLine = uow.FindObject<SubPurchOrderLine>(new BinaryOperator("PurchOrderNo", ExcelHelper.GetCellStringValue(xlSht, row, 1)));

                if (poLine != null)
                {
                    SubPurchOrderReceive poReceive = new SubPurchOrderReceive(uow);
                    poReceive.PurchOrderLine = poLine;
                    poReceive.Date = ExcelHelper.GetCellDateTimeValue(xlSht, row, 2);
                    poReceive.Qty = ExcelHelper.GetCellFloatValue(xlSht, row, 3);
                    poReceive.DefectQty = ExcelHelper.GetCellFloatValue(xlSht, row, 4);
                    poReceive.Save();
                }
                else
                {
                    xlSht.Cells[row, 7] = "no poLine";
                }

                row++;
            }
            uow.CommitTransaction();
            xlWb.Save();
            ReleaseExcel();
        }
Exemplo n.º 4
0
        public static void IssuePOReceive(SubItem subItem, SubPurchOrderLine.OrderType poType, SubSalesOrderLine soLine,
                                                     ref float Qty, ref float DefectQty, ref float NWDefectQty)
        {
            UnitOfWork uow = new UnitOfWork();
            uow.BeginTransaction();
            List<SubPurchOrderLine> PoLines = SubPurchOrderLine.LoadOpenBalance(uow, subItem, poType);

            try
            {
                for (int i = 0; i < PoLines.Count; i++)
                {
                    if (Qty == 0 && DefectQty == 0 && NWDefectQty == 0)
                        break;

                    SubPurchOrderLine poLine = PoLines[i];
                    SubPurchOrderReceive poReceive = new SubPurchOrderReceive(uow);
                    poReceive.PurchOrderLine = poLine;

                    if (soLine != null)
                    {
                        poReceive.SalesOrderLine = uow.FindObject<SubSalesOrderLine>(new BinaryOperator("Oid", soLine.Oid));
                    }

                    float poBal = poLine.BalQty;
                    poReceive.Qty = UDFunction.AssignSmallQty(ref poBal, ref Qty);
                    poReceive.DefectQty = UDFunction.AssignSmallQty(ref poBal, ref DefectQty);
                    poReceive.NWDefectQty = UDFunction.AssignSmallQty(ref poBal, ref NWDefectQty);

                    poReceive.Save();
                    poReceive.Post();

                }

                uow.CommitTransaction();
            }
            catch (Exception ex)
            {
                uow.RollbackTransaction();
                throw ex;
            }
        }