Показать сообщение отдельно
Старый 21.02.2005, 13:06   #4  
ATimTim is offline
ATimTim
Участник
 
395 / 13 (1) ++
Регистрация: 10.06.2004
Адрес: Питер
Насколько я понял, класс InventSum и его потомки не подходят для моей задачи, т.к. возвращают не обороты по складу (приход/расход)
, а следующие величины [в наличии, получено, отгружено ] .
Поэтому я решил создать свои методы и опубликовать , чтобы выслушать критику и советы.

PHP код:
// Расход
public static InventQty getIssueQty(Itemid _itemId,InventDimId _inventDimId,TransDate _transDate){
  
InventTrans inventTrans;
  ;
  
select sum(qty)
    
from InventTrans
    where    InventTrans
.itemid           == _itemid
          
&& InventTrans.direction        == inventdirection::Issue
          
&& ( InventTrans.transtype      == InventTransType::InventTransfer
               
|| InventTrans.transtype   == InventTransType::Sales
               
|| InventTrans.transtype     == InventTransType::InventCounting )
          && ( 
InventTrans.statusissue    == StatusIssue::Sold
               
|| InventTrans.statusissue == StatusIssue::Deducted
               
|| InventTrans.statusissue == StatusIssue::Picked
            
)
          && 
InventTrans.inventdimid      ==  _InventDimId
          
&& InventTrans.datephysical     == _transdate;

  return 
InventTrans.Qty;
}

// Приход
public static InventQty getReceiptQty(Itemid _itemId,InventDimId _inventDimId,TransDate _transDate){
  
InventTrans inventTrans;
  ;
  
select sum(qty)
    
from InventTrans
    where InventTrans
.itemid              == _itemid
          
&& InventTrans.direction        == inventdirection::Receipt
          
&& (InventTrans.transtype       == InventTransType::InventTransfer
             
|| InventTrans.transtype     == InventTransType::Purch
             
|| InventTrans.transtype     == InventTransType::InventCounting)
          && (
InventTrans.statusreceipt   == StatusReceipt::Purchased
              
|| InventTrans.statusreceipt == StatusReceipt::Received
              
|| InventTrans.statusreceipt == StatusReceipt::Arrived)
          && 
InventTrans.inventdimid      == _InventDimId
          
&& InventTrans.datephysical     == _transdate;

  return 
InventTrans.Qty;