1、成车开票(id,内容,日期,标志)
2、成车销售出库(id,内容,日期,标志)
3、购入库(购入库ID,购入描述...,入库标志--0 未入库 1 入库--)
4、库存(库存ID,购入库ID,单据号,日期...)
5、退货(退货ID,购入库ID,原因,日期...)

解决方案 »

  1.   

    if(尚末开票)         //从历史开票记录查询,需要“发票”数据表
    {
       成车开票          //插入新记录
       if(NOT 出库)      //确定状态是"出库"与“非出库”之分,Yes分支可以命名为“冲红” 
       {
           销售冲红      //须处理相关冲红工作,通常修改数量或金额为负值。
           销单无效      //确定有一种状态是"无效"。
           return        //流程的一个退出分支 
        }
    }if(成车销售出库)     //确定有一种状态是"销售出库",是“出库”的一个子状态。 
    {   输入条码         //进入条码处理模块。
    }
    else
    {    if(退库)       //确定有一种状态是"退库",也是“出库”的一个子状态。 
         {    成车退库处理     //进入成车退库处理模块。                     
         }
         else
         {    库存减少  //其它出库状态直接减少库存,须设立库存表.
         }
    }//------------------------------------
    整理后可以如下:
    设立数据表:
        发票(编号,型号, 数量,金额,状态)
            其中 状态::={ 冲红 | 销售 | 退库 | 其它出库 | 无效 | 已处理}
        库存(型号,数量)程序可以如下:
    if(not exists the bill)
        insert the record.case for 状态    
    when 冲红 then call sub 销售冲红, Set 状态 = 无效;
    when 销售 then call sub 输入条码;
    when 退库 then call sub 成车退库处理;
    when 其它出库 then update 库存 set 数量 - @num_of_current_bill from 发票
    else DO nothing.update 发票 set 状态 = 已处理 where 编号 = @Curren_编号
      

  2.   

    1、成车开票(id,内容,日期,标志)
    2、成车销售出库(id,内容,日期,标志)
    3、购入库(购入库ID,购入描述...,入库标志--0 未入库 1 入库--)
    4、库存(库存ID,购入库ID,单据号,日期...)
    5、退货(退货ID,购入库ID,原因,日期...)