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);
            }
        }
Exemplo n.º 2
0
        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)
        {
        }