protected override void updateCostAndProfit(ProductCirculation cir, ProductCirculationRecord record) { /*********更新数量和成本总价**********/ ProductStainlessDao stainlessDao = cirDao.getProductDao() as ProductStainlessDao; ProductStainless stainless = stainlessDao.FindByID(record.ProductID); double leftNum = stainless.Num + conf.productDirection * record.TotalNum; //只有采购入货才需要更新成本价,通过成本价重新计算来抵冲收付的差额 //销售、销售退货、采购退货通过利润的计算来抵消收付的差额 //采购退货之所以不重新计算成本价,是因为如果退货价格很高的话,可能导致成本价为负数 if (conf.type == ProductCirculation.CirculationType.purchase) { double totalCost = stainless.PriceCost * stainless.Num + conf.productDirection * record.Price * record.TotalNum; if (leftNum != 0) { double cost = totalCost / leftNum; stainless.PriceCost = cost; } } //double乘以int会出现0.9999999的问题 stainless.Num = (double)((decimal)stainless.Num + conf.productDirection * (decimal)record.TotalNum); stainlessDao.Update(stainless); /*************增加利润表记录**********/ if (conf.type == ProductCirculation.CirculationType.sell || conf.type == ProductCirculation.CirculationType.sellBack || conf.type == ProductCirculation.CirculationType.purchaseBack) { SellProfit profit = new SellProfit(cir, record, stainless.PriceCost); SellProfitDao.getInstance().Insert(profit); } }
public List <ProductCirculationRecord> FindList(int circulationID) { List <ProductCirculationRecord> records = new List <ProductCirculationRecord>(); string commandText = string.Format("select * from ProductCirculationRecord, Product where ProductCirculationRecord.productID = Product.ID and circulationID = {0} order by ProductCirculationRecord.ID", circulationID); DataTable dt = DbHelperAccess.executeQuery(commandText); foreach (DataRow dr in dt.Rows) { ProductCirculationRecord record = new ProductCirculationRecord(); record.CirculationID = circulationID; record.ID = (int)dr["ProductCirculationRecord.ID"]; double price; double.TryParse(dr["ProductCirculationRecord.price"].ToString(), out price); record.Price = price; record.ProductID = (int)dr["Product.ID"]; record.ProductName = dr["name"].ToString(); record.TotalNum = (int)dr["totalNum"]; records.Add(record); } return(records); }
//弃核 protected override void cancelUpdateCostAndProfit(ProductCirculation cir, ProductCirculationRecord record) { /*********更新数量**********/ ProductStainlessDao stainlessDao = cirDao.getProductDao() as ProductStainlessDao; ProductStainless stainless = stainlessDao.FindByID(record.ProductID); stainless.Num = (double)((decimal)stainless.Num - conf.productDirection * (decimal)record.TotalNum); stainlessDao.Update(stainless); }
//set protected override void setRecord(DataGridViewRow row, ProductCirculationRecord rec) { ProductStainlessCirculationRecord record = rec as ProductStainlessCirculationRecord; row.Cells["ID"].Value = record.ID; row.Cells["product"].Value = new LookupArg(record.ProductID, record.ProductName); row.Cells["serial"].Value = record.Serial; row.Cells["quantityPerPiece"].Value = record.QuantityNull?null:record.QuantityPerPiece.ToString(); row.Cells["pieces"].Value = record.PiecesNull?null:record.Pieces.ToString(); row.Cells["num"].Value = record.TotalNum; row.Cells["unit"].Value = record.Unit; row.Cells["price"].Value = record.Price.ToString(); row.Cells["totalPrice"].Value = record.TotalPrice; row.Cells["comment"].Value = record.Comment; }
protected virtual void cancelUpdateCostAndProfit(ProductCirculation cir, ProductCirculationRecord record) { }
//不需要实现refresh,因为窗口Actived时会自动检测 protected virtual void setRecord(DataGridViewRow row, ProductCirculationRecord record) { }