| 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 ); | 
|             } | 
|           } | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |