Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod OrderOffset ( 
 | 
  MacroPlan macroPlan 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    needOffsetFillingCapacityOrders := selectset( macroPlan, FillingCapacityOrder, tempFCO, tempFCO.State() = "未冲减" or tempFCO.State() ="" ); 
 | 
     
 | 
    traverse ( needOffsetFillingCapacityOrders, Elements, fco, fco.Quantity() > 0 ) { 
 | 
      originalCounterSignedOrder := select( macroPlan, SalesDemand.astype( CustomerOrder ), tempCO, tempCO.CustomerName() = fco.Customer()  and  
 | 
                                                                                                    tempCO.ProductID()    = fco.ProductID() and  
 | 
                                                                                                    tempCO.OrderTag()     = "反签" 
 | 
                                           ); 
 | 
      if ( fco.OrderType() = "反签" ) { 
 | 
        if ( isnull( originalCounterSignedOrder ) ) { 
 | 
          customerOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, fco.Quantity() ); 
 | 
          customerOrder.OrderTag( "反签" ); 
 | 
        } else { 
 | 
          originalCounterSignedOrder.Quantity( originalCounterSignedOrder.Quantity() + fco.Quantity() ); 
 | 
        } 
 | 
      } else if ( fco.OrderType() = "授权" ) { 
 | 
        originalAuthorizedOrder := select( macroPlan, SalesDemand.astype( CustomerOrder ), tempCO, tempCO.CustomerName() = fco.Customer()  and  
 | 
                                                                                                   tempCO.ProductID()    = fco.ProductID() and  
 | 
                                                                                                   tempCO.OrderTag()     = "授权" 
 | 
                                          ); 
 | 
        if ( isnull( originalCounterSignedOrder ) ) { 
 | 
          if ( isnull( originalAuthorizedOrder ) ) { 
 | 
            customOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, fco.Quantity() ); 
 | 
            customOrder.OrderTag( "授权" ); 
 | 
          } else { 
 | 
            originalAuthorizedOrder.Quantity( originalAuthorizedOrder.Quantity() + fco.Quantity() ); 
 | 
          } 
 | 
        } else { 
 | 
          numberOfReverseSignatures := originalCounterSignedOrder.Quantity(); 
 | 
          newNumberOfAuthorizations := ifexpr( ( fco.Quantity() - numberOfReverseSignatures ) >= 0, fco.Quantity() - numberOfReverseSignatures, 0 ); 
 | 
          numberOfReverseSignatures := ifexpr( ( fco.Quantity() - numberOfReverseSignatures ) >= 0, 0, numberOfReverseSignatures - fco.Quantity() ); 
 | 
           
 | 
          if ( numberOfReverseSignatures >= 0 ) { 
 | 
            originalCounterSignedOrder.Quantity( numberOfReverseSignatures ); 
 | 
          } else { 
 | 
            originalCounterSignedOrder.Delete(); 
 | 
          } 
 | 
           
 | 
          if ( newNumberOfAuthorizations > 0 ) { 
 | 
            if ( isnull( originalAuthorizedOrder ) ) { 
 | 
              customerOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, newNumberOfAuthorizations ); 
 | 
              customerOrder.OrderTag( "授权" ); 
 | 
            } else { 
 | 
              originalAuthorizedOrder.Quantity( originalAuthorizedOrder.Quantity() + newNumberOfAuthorizations ); 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |