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; }
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(); }
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(); }
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; } }