Generated on April 19, 2017 7:59:53 AM CEST
e-dec Plausi-Rules Report: Import
 
 
 
Package: plausi_ruleset_import (342 rules)
  
  
 
Rule: R100 Verkehrsrichtung in Stammdaten
  
Description:
Gueltige Verkehrsrichtung gem. Stammdaten.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the direction of POSITION isNotNull
   and the direction of POSITION is not one of the refDirections of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_direction' , the name of this rule ) ;
  
  
 
Rule: R101 Veredelungstyp in Stammdaten
  
Description:
Gueltiger Veredelungstyp gem. Stammdaten
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the refinementType of POSITION isNotNull
   and the refinementType of POSITION is not one of the refRefinementTypes of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_refinementType' , the name of this rule ) ;
  
  
 
Rule: R102 Verfahrenstyp in Stammdaten
  
Description:
Gueltiger Verfahrenstyp gem. Stammdaten
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the processType of POSITION isNotNull
   and the processType of POSITION is not one of the refProcessTypes of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_processType' , the name of this rule ) ;
  
  
 
Rule: R103 Abrechnungstyp in Stammdaten
  
Description:
Gueltiger Abrechnungstyp gem. Stammdaten.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the billingType of POSITION isNotNull
   and the billingType of POSITION is not one of the refBillingTypes of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_billingType' , the name of this rule ) ;
  
  
 
Rule: R105 Veranlagungsbeleg in Stammdaten
  
Description:
Gültiger Veranlagungsbeleg gem. Stammdaten oder 0 sonst Fehler.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   all of the following conditions are true :
         - the injunctionType of HEADER isNotNull
         - "0" is not the injunctionType of HEADER 
         - the injunctionType of HEADER is not one of the refInjunctionTypes of REFDATA ,
then
   'the result' .setHeaderError( "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_injunctionType' , the name of this rule ) ;
  
  
 
Rule: R109a Dienststelle falsch
  
Description:
Gueltige Versions- und Dienststellennummer.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   the lastCorrectionCode of HEADER isNotNull
   and the customsOfficeNumber of HEADER isNotNull
   and the customsOfficeNumber of HEADER is not the lastVersionCustomsOfficeNumber of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R109b Annullation
  
Description:
Gueltige Versions- und Zollstellennummer.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where the lastCorrectionCode of this header isNotNull ;
if
   'the var_correctionCode_Annullation_0' is the lastCorrectionCode of HEADER 
   and the customsOfficeNumber of HEADER is the lastVersionCustomsOfficeNumber of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R109c Versionsnummer falsch
  
Description:
Gueltige Versions- und Zollstellennummer.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where the lastCorrectionCode of this header isNull
         or ( the lastCorrectionCode of this header isNotNull
         and 'the var_correctionCode_Annullation_0' is not the lastCorrectionCode of this header 
         and the lastVersionCustomsOfficeNumber of this header isNotNull
         and the customsOfficeNumber of this header isNotNull
         and the customsOfficeNumber of this header is the lastVersionCustomsOfficeNumber of this header ) ;
if
   the lastCorrectionCode of HEADER isNull
   and the correctionCode of HEADER is one of { 'the var_correctionCode_Annullation_0' , 'the var_correctionCode_Korrektur_2' }
   or the lastCorrectionCode of HEADER isNotNull
   and 'the var_correctionCode_Annullation_0' is not the lastCorrectionCode of HEADER 
   and 'the var_correctionCode_Erstuebermittlung_1' is the correctionCode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R110 Begruendung
  
Description:
Wenn der Anmeldungstyp gleich 2 ist, dann ist eine Begruendung anzugeben, sonst darf keine Begruendung angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( 'the var_declarationType_provisorisch_2' is the declarationType of HEADER 
   and the reason of HEADER isNull )
   or ( 'the var_declarationType_provisorisch_2' is not the declarationType of HEADER 
   and the reason of HEADER isNotNull )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_reason' , the name of this rule ) ;
  
  
 
Rule: R111 Berichtigungsgrund
  
Description:
Wenn der Berichtigungcode gleich 0 (Annulation) oder gleich 2 (Berichtigung) ist , dann ist ein Berichtigungsgrund notwendig sonst  darf kein Berichtigungsgrund verwendet werden.
(correctionCode : 0 = Annullation / 1 = Erstübermittlung / 2 = Berichtigung / 3 = erneute Anforderung von Rückmeldung und PDF)
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( the correctionReason of HEADER isNull
   and the correctionCode of HEADER isNotNull
   and the correctionCode of HEADER is one of { 'the var_correctionCode_Annullation_0' , 'the var_correctionCode_Korrektur_2' } )
   or ( 'the var_correctionCode_Erstuebermittlung_1' is the correctionCode of HEADER 
   and the correctionReason of HEADER isNotNull )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionReason' , the name of this rule ) ;
  
  
 
Rule: R112 Transportmitteltyp
  
Description:
Wenn der Verkehrszweig gleich 3 (Strassenverkehr) ist, dann muss der Transportmitteltyp gesetzt sein, sonst darf der Transportmitteltyp nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( 'the var_transportMode_Strasse_3' is the transportMode of HEADER 
   and the transportationType of HEADER isNull )
   or ( 'the var_transportMode_Strasse_3' is not the transportMode of HEADER 
   and the transportationType of HEADER isNotNull )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_transportMeans_type' , the name of this rule ) ;
  
  
 
Rule: R113 Transportmittelland
  
Description:
Wenn der Verkehrszweig gleich 3  (Strassenverkehr) ist, dann muss das Transportmittelland angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( the transportationCountry of HEADER isNull
   or 'the helper_def_empty_String' is the transportationCountry of HEADER )
   and 'the var_transportMode_Strasse_3' is the transportMode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_transportMeans_country' , the name of this rule ) ;
  
  
 
Rule: R114 Transportmittelkennzeichen
  
Description:
Wenn der Verkehrszweig gleich 3 (Strassenverkehr) ist, dann muss das Transportmittelkennzeichen gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( the transportationNumber of HEADER isNull
   or 'the helper_def_Space_String' is the transportationNumber of HEADER 
   or 'the helper_def_empty_String' is the transportationNumber of HEADER )
   and 'the var_transportMode_Strasse_3' is the transportMode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_transportMeans_number' , the name of this rule ) ;
  
  
 
Rule: R115 Container
  
Description:
Wenn der Container gleich 1 ist, dann ist die Containernummer anzugeben, sonst darf die Containernummer nicht angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( 'the var_transportMean_inContainer_nein_0' is the transportInContainer of HEADER 
   and the number of elements in the containerNumbers of HEADER is more than 0 )
   or ( 'the var_transportMean_inContainer_ja_1' is the transportInContainer of HEADER 
   and the number of elements in the containerNumbers of HEADER is 0 )
   or ( 'the var_transportMean_inContainer_ja_1' is the transportInContainer of HEADER 
   and ( the containerNumbers of HEADER contain 'the helper_def_Space_String' 
   or the containerNumbers of HEADER contain 'the helper_def_empty_String' ) )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_transportInContainer' , the name of this rule ) ;
  
  
 
Rule: R118 Erzeugungsland CH oder FL oder LI
  
Description:
Das Erzeugungsland darf nicht gleich CH, FL oder LI sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where checkWarenDetailInAllWarenVorhanden( "28" , "66" ) of this header is false ;
if
   the dispatchCountry of HEADER isNotNull
   and the dispatchCountry of HEADER is one of { "CH" , "FL" , "LI" }
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_dispatchCountry' , the name of this rule ) ;
  
  
 
Rule: R119 Sperrcode Konto Zoll
  
Description:
Der Zollkonto-Sperrcode und der Berichtigungscode dürfen nicht beide "1" sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   "1" is REFDATA .getRefLockCodeAccount( the customsAccount of HEADER )
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R120 Sperrcode Konto MWST
  
Description:
Das Mehrwertsteuerkonto-Sperrcode und der Berichtigungscode dürfen nicht beide "1" sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   "1" is REFDATA .getRefLockCodeAccount( the VATAccount of HEADER )
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
  
  
 
Rule: R121 Empfaengerland CH
  
Description:
Das Empfaengerland muss CH oder FL oder LI sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   the consigneeCountry of HEADER isNotNull
   and the consigneeCountry of HEADER is not one of { "CH" , "FL" , "LI" }
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_consignee_country' , the name of this rule ) ;
  
  
 
Rule: R122 Importeurland CH
  
Description:
Das Importeurland muss CH oder FL oder LI sein (ausser bei UC80).
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
         and 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header ;
if
   the importerCountry of HEADER isNotNull
   and the importerCountry of HEADER is not one of { "CH" , "FL" , "LI" }
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_importer_country' , the name of this rule ) ;
  
  
 
Rule: R123 MWST-Wert Statistischer Wert
  
Description:
Wenn der Richtigcode MWSt-Wert gleich 0 und der statischer Wert nicht gleich 0 ist, dann muss der MWSt-Wert groesser oder gleich dem statistischen Wert und kleiner oder gleich dreimal dem statistischen Wert sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the VATValue of this position isNotNull
         and 'the var_customsClearanceType_AbgabeFrei_8' is not the customsClearanceType of this position 
         and the statisticalValue of this position isNotNull
         and false is this position is zusatz abgabe ac9 ;
if
   ( the VATValueConfirmation of POSITION isNull
   or "0" is the VATValueConfirmation of POSITION )
   and ( the amount of the VATValue of POSITION is less than the amount of the statisticalValue of POSITION 
   or the amount of the VATValue of POSITION is more than ( the amount of the statisticalValue of POSITION * 'the helper_def_int_3' ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_VATValue' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_statisticalValue' , the name of this rule ) ;
  
  
 
Rule: R124 MWST-Code vorgesehen
  
Description:
Wenn der angemeldeter MWSt-Code für eine Warengruppe gem. Stammdaten vorgesehen ist, muss der Richtigcode MWSt-Code nicht gesetzt sein (und umgekehrt).
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_AbgabeFrei_8' is not the customsClearanceType of this position 
         and true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   ( the VATCode of POSITION is one of REFDATA .getAllMwstCodes( the commodityCode of POSITION )
   and "1" is the VATCodeConfirmation of POSITION )
   or ( the VATCode of POSITION is not one of REFDATA .getAllMwstCodes( the commodityCode of POSITION )
   and "1" is not the VATCodeConfirmation of POSITION 
   and the VATCode of POSITION is not one of { 'the var_VATCode_Verlagerungsverfahren_MWST_90' , 'the var_VATCode_Lohnveredelung_im_Nichterhebungsverfahren_MWST_91' , 'the var_VATCode_Nachtraegliche_Steuerveranlagung_92' } )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_VATCode' , the name of this rule ) ;
  
  
 
Rule: R125a Mittelwertpruefung
  
Description:
Wenn die Zusatzmenge fuer die angemeldete Warennummer gem. Stammdaten vorgesehen ist, der Richtigcode statistischer Wert gleich 0 ist und der Bemessungscode gem. Stammdaten gleich 61 ist, dann muss der statistische Wert geteilt durch die Zusatzmenge groesser oder gleich dem unteren Mittelwert und kleiner oder gleich dem oberen Mittelwert sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where this position is zusatz abgabe ac9 is false ;
   set 'REFDATA' to a ref data ;
if
   ( the statisticalValueConfirmation of POSITION isNull
   or "0" is the statisticalValueConfirmation of POSITION )
   and ( the additionalUnit of POSITION isNotNull
   and 0 is not the additionalUnit of POSITION )
   and getBemessungsCodeFromMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getUntererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getObererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and "61" is getBemessungsCodeFromMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
   and ( ( getUntererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is more than the amount of the statisticalValue of POSITION .divide( the additionalUnit of POSITION , 2 , 1 ) )
   or ( getObererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is less than the amount of the statisticalValue of POSITION .divide( the additionalUnit of POSITION , 2 , 1 ) ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_statisticalValue' , the name of this rule ) ;
  
  
 
Rule: R125b Mittelwertpruefung
  
Description:
Wenn die Eigenmasse fuer die angemeldete Warennummer gem. Stammdaten vorgesehen ist, der Richtigcode statistischer Wert gleich 0 ist und der Bemessungscode gem. Stammdaten gleich 51 ist, dann muss der statistische Wert geteilt durch die Eigenmasse groesser oder gleich dem unteren Mittelwert und kleiner oder gleich dem oberen Mittelwert sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where true is not this position is zusatz abgabe ac9
         and the netMass of this position isNotNull
         and 0 is not the netMass of this position 
         and the statisticalValue of this position isNotNull ;
   set 'REFDATA' to a ref data ;
if
   ( any of the following conditions is true :
         - the statisticalValueConfirmation of POSITION isNull
         - "0" is the statisticalValueConfirmation of POSITION , )
   and getBemessungsCodeFromMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getUntererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getObererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and "51" is getBemessungsCodeFromMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
   and ( getUntererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is more than the amount of the statisticalValue of POSITION .divide( the netMass of POSITION , 2 , 1 )
   or getObererMittelwert( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is less than the amount of the statisticalValue of POSITION .divide( the netMass of POSITION , 2 , 1 ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_statisticalValue' , the name of this rule ) ;
  
  
 
Rule: R127 Rohmasse - Eigenmasse
  
Description:
Wenn der Richtigcode Rohmasse gleich 0 ist und die Eigenmasse kleiner oder gleich 10, dann muss die Rohmasse groesser oder gleich Eigenmasse und kleiner oder gleich 25-mal Eigenmasse sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the netMass of this position isNotNull
         and the grossMass of this position isNotNull
         and true is not this position is zusatz abgabe ac9
         and 'the var_grossMassConfirmation_gesetzt_1' is not the grossMassConfirmation of this position ;
if
   ( ( ( 'the helper_def_int_10' equals the netMass of POSITION 
   or 'the helper_def_int_10' is more than the netMass of POSITION )
   and the grossMass of POSITION is more than ( the netMass of POSITION * 'the helper_def_int_25' ) )
   or ( 'the helper_def_int_10' is less than the netMass of POSITION 
   and the grossMass of POSITION is more than ( the netMass of POSITION * 'the helper_def_float_2_5' ) )
   or the grossMass of POSITION is less than the netMass of POSITION )
   and ( the grossMassConfirmation of POSITION isNull
   or 'the var_grossMassConfirmation_nicht_gesetzt_0' is the grossMassConfirmation of POSITION )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_grossMass' , the name of this rule ) ;
  
  
 
Rule: R128 Eigenmasse
  
Description:
Wenn die Eigenmasse fuer die angemeldete Warennummer gem. Stammdaten notwendig ist, dann muss die Eigenmasse angegeben sein, sonst ist sie optional
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_AbgabeFrei_8' is not the customsClearanceType of this position 
         and true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   ( the netMass of POSITION isNull
   or 0 is the netMass of POSITION )
   and 'the var_quantityCode_netMass_1' is one of getMengenCodeTypes( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_netMass' , the name of this rule ) ;
  
  
 
Rule: R129 Staffelgewicht Eigenmasse
  
Description:
Wenn der Staffelgewichtscode gem. Stammdaten gleich 1 ist und der Richtigcode Eigenmasse gleich 0 ist, dann muss die Eigenmasse groesser oder gleich dem unteren Staffelgewicht und kleiner oder gleich dem oberen Staffelgewicht sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   the netMass of POSITION isNotNull
   and getUnteresStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and 'the var_netMassConfirmation_1' is not the netMassConfirmation of POSITION 
   and 'the var_Staffelgewichtscode_1' is getStaffelgewichtscode( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
   and the netMass of POSITION is less than getUnteresStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_netMass' , the name of this rule ) ;
  
  
 
Rule: R130 Zusatzmenge
  
Description:
Wenn die Zusatzmenge fuer die angemeldete Warennummer gem. Stammdaten notwendig ist, dann muss die Zusatzmenge angegeben sein, sonst ist sie optional.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_AbgabeFrei_8' is not the customsClearanceType of this position 
         and true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   the additionalUnit of POSITION isNull
   and 'the var_quantityCode_additionalUnit_2' is one of getMengenCodeTypes( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalUnit' , the name of this rule ) ;
  
  
 
Rule: R131a Staffelgewichtscode Zusatzmenge
  
Description:
Wenn der Staffelgewichtscode gem. Stammdaten gleich 2 ist und der Richtigcode Zusatzmenge gleich 0 ist, 
dann muss Eigenmasse geteilt durch Zusatzmenge groesser oder gleich dem unteren Staffelgewicht und kleiner oder gleich dem oberen Staffelgewicht sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   the statisticalCode of POSITION isNotNull
   and the netMass of POSITION isNotNull
   and the commodityCode of POSITION isNotNull
   and getUnteresStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getOberesStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and getStaffelgewichtscode( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA isNotNull
   and 'the var_additionalUnitConfirmation_1' is not the additonalUnitConfirmation of POSITION 
   and 'the var_Staffelgewichtscode_2' is getStaffelgewichtscode( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
   and the additionalUnit of POSITION isNotNull
   and 0 is not the additionalUnit of POSITION 
   and ( any of the following conditions is true :
         - getUnteresStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is more than plausi helpers.divide( the netMass of POSITION , the additionalUnit of POSITION , 3 , 1 )
         - getOberesStaffelgewicht( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA is less than plausi helpers.divide( the netMass of POSITION , the additionalUnit of POSITION , 3 , 1 ) , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalUnit' , the name of this rule ) ;
  
  
 
Rule: R131b Staffelgewichtscode Zusatzmenge 0
  
Description:
Wenn Staffelgewichtscode = 2 (Verhältnis Eigenmasse/Zusatzmenge) gem. Stammdaten vorgesehen und Richtigcode Zusatzmenge ="0, dann darf Zusatzmenge nicht 0 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   'the var_additionalUnitConfirmation_1' is not the additonalUnitConfirmation of POSITION 
   and 'the var_Staffelgewichtscode_2' is getStaffelgewichtscode( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA 
   and the additionalUnit of POSITION isNotNull
   and 0 is the additionalUnit of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalUnit' , the name of this rule ) ;
  
  
 
Rule: R132a Packstuecke
  
Description:
Wenn der Verpackungscode NE, IN, VG, VL, VO, VQ, VR, VS oder VY ist, dann muss der Wert des Felds "Anzahl Packstücke" leer oder "0" sein. Das Feld "Zeichen Packstücke" ist optional.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where this position is zusatz abgabe ac9 is false ;
   set 'PACKAGING' to a packaging
      where the positions nr of this packaging equals the positions nr of POSITION ;
if
   the packagingType of PACKAGING is one of { "NE" , "IN" , "VG" , "VL" , "VO" , "VQ" , "VR" , "VS" , "VY" }
   and ( none of the following conditions are true :
         - the quantity of PACKAGING isNull
         - "0" is the quantity of PACKAGING 
         - 'the helper_def_empty_String' is the quantity of PACKAGING , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_packaging' , the name of this rule ) ;
  
  
 
Rule: R132c Packstuecke
  
Description:
Wenn der Verpackungscode nicht gleich NE, IN, VG, VL, VO, VQ, VR, VY, VS ist, dann darf das Feld "Zeichen (Nummer)Packstücke" nicht leer sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where false is this position is zusatz abgabe ac9 ;
   set 'PACKAGING' to a packaging
      where the positions nr of this packaging equals the positions nr of POSITION ;
if
   the packagingType of PACKAGING is not one of { "NE" , "IN" , "VG" , "VL" , "VO" , "VQ" , "VR" , "VY" , "VS" }
   and ( any of the following conditions is true :
         - the packagingReference of PACKAGING isNull
         - 'the helper_def_empty_String' is the packagingReference of PACKAGING , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_packaging' , the name of this rule ) ;
  
  
 
Rule: R133a Zollansatz ohne Richtigcode
  
Description:
Wenn der Zollansatz gesetzt ist, muss der Richtigcode Zollansatz gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the customsClearanceType of this position is not one of { 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' , 'the var_customsClearanceType_AbgabeFrei_8' }
         and false is this position is zusatz abgabe ac9 ;
if
   ( the rate of POSITION isNotNull
   and any of the following conditions is true :
         - the rateConfirmation of POSITION isNull
         - "0" is the rateConfirmation of POSITION , )
   or ( all of the following conditions are true :
         - the rate of POSITION isNull
         - "1" is the rateConfirmation of POSITION , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R133b Zollansatz eindeutig
  
Description:
Wenn der Veranlagungstyp nicht 8,  10 oder 11 und der Zollansatz fuer eine Warennummer, ein Ursprungsland, 
einen Zolbeguenstigungscode und eine Praeferenz nicht eindeutig ist gem. Stammdaten, muss er angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the customsClearanceType of this position is not one of { 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' , 'the var_customsClearanceType_AbgabeFrei_8' }
         and true is not this position is zusatz abgabe ac9 ;
   set 'REFDATA' to a ref data ;
if
   the rate of POSITION isNull
   and REFDATA .checkRefIsZollansatzUnique( the commodityCode of POSITION , the originCountry of POSITION , the customsFavourCode of POSITION , the preference of POSITION , the statisticalCode of POSITION ) is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R134a Bewilligungspflicht 0
  
Description:
Wenn die Rohmasse grösser Toleranzmenge und die Bewilligungspflicht (permitObligation) = 0 (nicht bewilligungspflichtig) ist und es existiert einen Bewilligungspflicht gemäss den Stammdaten, dann schlägt die Regel an. Jedoch nur, wenn der Veranlagungsort nicht 3 oder 4 (Erfassung ab Einheitsdokument oder von Amtes wegen ist)
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where ( all of the following conditions are true :
               - 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
               - 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header , ) ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER isNotNull
   and getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
   and getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER is more than getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
   and 'the var_permitObligation_nicht_bewilligungspflichtig_0' is the permitObligation of POSITION 
   and getBewilligungObligatorisch( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permitObligation' , the name of this rule ) ;
  
  
 
Rule: R134b Bewilligungspflicht 2
  
Description:
Wenn die Rohmasse grösser Toleranzmenge und die Bewilligungspflicht (permitObligation) = 2 (bewilliungsfrei) ist und es existiert gemäss Stammdaten keine Bewilliungsfreiheit, dann schlägt die Regel an.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER isNotNull
   and getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
   and getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER is more than getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
   and 'the var_permitObligation_bewilligungsfrei_gemaess_Deklarant_2' is the permitObligation of POSITION 
   and "1" is not getBewilligungObligatorisch( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permitObligation' , the name of this rule ) ;
  
  
 
Rule: R134c Obligatorische Bewilligunsstellencodes
  
Description:
Wenn die Rohmasse grösser Toleranzmenge und die Bewilligungspflicht (permitObligation) = 2 (bewilliungsfrei) ist und es existiert gemäss Stammdaten keine Bewilliungsfreiheit, dann schlägt die Regel an.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER isNotNull
   and getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
   and getSummOfGrossMass( the commodityCode of POSITION , the statisticalCode of POSITION ) of HEADER is more than getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
   and "0" is getBewilligungObligatorisch( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
   and plausi helpers.containsAll( REFDATA .getObligatorischeBewilligungsstellencodes( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) , the permitAuthorities of POSITION ) is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_statistics' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R135 Bewilligungspflichtcode 1
  
Description:
Wenn der Bewilligungspflichtcode gleich 1 ist, dann muss der Bewilligungstyp, -stellencode und die Bewilligungsnummer angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   the permitObligation of POSITION isNotNull
   and 'the var_permitObligation_bewilligungspflichtig_1' is the permitObligation of POSITION 
   and isBewilligungsTypAndNumberAndStellenCodeInList( null string , null string , null string ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R137 Bewilligung 6 2
  
Description:
Wenn die Zusatzabgabenart 280 und der Zusatzabgabenschlüssel 200 gesetzt sind, muss der Bewilligungstyp 6, der Bewilligungsstellencode 2 und die Bewilligungsnummer angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
if
   'the var_additionalTaxType_Monopolgebuehren_280' is the type of ADDITONALTAX 
   and 'the var_additionalTaxKey_200' is the key of ADDITONALTAX 
   and isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_Verpflichtung_6' , null string , "2" ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R138 Bewilligung 6 97
  
Description:
Wenn die Zusatzabgabenart 700 und der Zusatzabgabenschlüssel 002 gesetzt sind, muss der Bewilligungstyp 6, der Bewilligungsstellencode 97 und die Bewilligungsnummer angegeben werden
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
if
   'the var_addtionalTaxType_Lenkungsabgabe_VOC_700' is the type of ADDITONALTAX 
   and 'the var_additionalTaxKey_002' is the key of ADDITONALTAX 
   and isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_Verpflichtung_6' , null string , "97" ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R140a Bewilligung 2
  
Description:
Wenn der Verarbeitungscode ungleich 00, 05, 06, 18, 90, 01 oder 04 ist und die Rohmasse grösser als der Toleranzwert ist, muss der Bewilligungstyp 2, die Bewilligungsstelle und die Bewilligungsnummer angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the grossMass of POSITION isNotNull
   and getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
   and ( all of the following conditions are true :
         - REFDATA .getVerarbeitungscode( the commodityCode of POSITION , the statisticalCode of POSITION ) isNotNull
         - REFDATA .getVerarbeitungscode( the commodityCode of POSITION , the statisticalCode of POSITION ) is not one of { 0 , 5 , 6 , 18 , 90 , 1 , 4 }
         - the grossMass of POSITION is more than getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
         - isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_Generalbewilligung_2' , null string , null string ) of POSITION is false , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R140b Bewilligung 3
  
Description:
Wenn der Verarbeitungscode gleich 01 oder 04 und die Rohmasse grösser als der Toleranzwert ist, muss der Bewilligungstyp 3, die Bewilligungsstelle und die Bewilligungsnummer angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the grossMass of POSITION isNotNull
   and getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA isNotNull
   and all of the following conditions are true :
         - REFDATA .getVerarbeitungscode( the commodityCode of POSITION , the statisticalCode of POSITION ) is one of { 1 , 4 }
         - the grossMass of POSITION is more than getToleranzMenge( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
         - isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_Generallizenz_3' , null string , null string ) of POSITION is false ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R141 Bewilligung 7 96
  
Description:
Wenn der Lagercode 2, 3, 4 oder 5 ist, muss der Bewilligungstyp 7, der Bewilligungsstellencode 96 und die Bewilligungsnummer angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   the storageType of POSITION is one of { "2" , "3" , "4" , "5" }
   and isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_BewilligungPeriodischeSteueranmeldung_7' , null string , 'the var_permitAuthority_EZVMinOest_96' ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R142 Bewilligung 8 96
  
Description:
Wenn der Lagercode 1 oder 2 und der ZB-Typ 5 ist, muss der Bewilligungstyp 8, der Bewilligungsstellencode 96 und die Bewilligungsnummer angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   the storageType of POSITION is one of { "1" , "2" }
   and "5" is REFDATA .getZBTypCode( the commodityCode of POSITION )
   and isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_besoVerpflichtungMinoest_8' , null string , 'the var_permitAuthority_EZVMinOest_96' ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R144a NZE-Pflicht 0
  
Description:
Gueltiger NZE-Pflichtcode: Pflichtcode 0 (ohne Kontrolle) nur moeglich, wenn weder fakultative noch obligatorische NZE-Artencodes in Stammdaten existieren.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where all of the following conditions are true :
               - 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
               - 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header , ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "0" is the nonCustomsLawObligation of POSITION 
   and any of the following conditions is true :
         - 0 is less than the number of elements in getNZEObliArtenCodes( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA 
         - 0 is less than the number of elements in getNZEFakultativArtenCodes( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_non_customs_law' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_nonCustomsLawObligation' , the name of this rule ) ;
  
  
 
Rule: R144b NZE-Pflicht 2
  
Description:
Gültiger NZE-Pflichtcode: Pflichtcode 2 (ohne Kontrolle gem. Deklarant) nur möglich, wenn fakultative NZE-Artencodes in Stammdaten existieren
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "2" is the nonCustomsLawObligation of POSITION 
   and the number of elements in getNZEFakultativArtenCodes( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA is at most 0 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_nonCustomsLawObligation' , the name of this rule ) ;
  
  
 
Rule: R144c NZE-Pflicht 0 oder 2
  
Description:
Wenn NZE-Pflichtcode 0 (ohne Kontrolle) oder NZE-Pflichtcode 2 (ohne Kontrolle gemäss Deklarant), dann dürfen NZE nicht angemeldet werden.ieren
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   the nonCustomsLawObligation of POSITION is one of { "0" , "2" }
   and the number of elements in the nonCustomsLawTypes of POSITION is at least 1 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_nonCustomsLawObligation' , the name of this rule ) ;
  
  
 
Rule: R145a Lagercode 1 oder 2
  
Description:
Wenn der Lagercode 1 oder 2, dann muss mind. eine Zusatzabgabenart im Bereich 600-640, oder 743 deklariert werden
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   the storageType of POSITION is one of { "1" , "2" }
   and any of the following conditions is true :
         - POSITION has any additionalTaxes is false 
         - ( POSITION .isAtLeastOneZusatzabgabeArtInRange( 'the var_additionalTaxType_MineralOelSteuer_600' , 'the var_additionalTaxType_MineralOelSteuer_Brennstoffe_AndereMinaralOel_Produkte_640' ) is false 
         and 'the var_additionalTaxType_CO2_Abgabe_KohlePetrolkoks_743' is not one of the additionalTaxTypes of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_storageType' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R145b Lagercode 3-5
  
Description:
Wenn der Lagercode 3,4 oder 5, dann darf keine Zusatzabgabenart 600-640, 710, 720, 730 oder 740-743 deklariert werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITIONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
if
   the storageType of POSITION is one of { "3" , "4" , "5" }
   and any of the following conditions is true :
         - POSITION .isAtLeastOneZusatzabgabeArtInRange( 'the var_additionalTaxType_MineralOelSteuer_600' , 'the var_additionalTaxType_MineralOelSteuer_Brennstoffe_AndereMinaralOel_Produkte_640' ) is true 
         - the type of ADDITIONALTAX is one of { 'the var_additionalTaxType_710' , 'the var_additionalTaxType_720' , 'the var_additionalTaxType_730' , 'the var_additionalTaxType_CO2_Abgabe_Heizoel_740' , 'the var_additionalTaxType_CO2_Abgabe_Erdgas_741' , 'the var_additionalTaxType_CO2_Abgabe_Andere_MineralOele_742' , 'the var_additionalTaxType_CO2_Abgabe_KohlePetrolkoks_743' } ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_storageType' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R146 Bemessungscode 11
  
Description:
Wenn der Bemessungsgrundlagencode 11 ist, dann muessen Zusatzabgabenart und -schluessel gesetzt und die Menge gleich Rohmasse sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the grossMass of this position isNotNull ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
   set 'REFDATA' to a ref data ;
if
   true is not ( the key of ADDITONALTAX isNotNull
   and the key of ADDITONALTAX is not one of REFDATA .getRefZusatzabgabenSchluessel( the type of ADDITONALTAX ) )
   and true is not ( "9999.9999" is not the commodityCode of POSITION 
   and checkRefTarifNumber of REFDATA with the commodityCode of POSITION is false )
   and true is not ( "9999.9999" is not the commodityCode of POSITION 
   and the statisticalCode of POSITION is not one of getRefTarifKeyNumber( the commodityCode of POSITION ) of REFDATA )
   and the type of ADDITONALTAX is not one of { 'the var_additionalTaxType_Vorgezogene_EntsorgungsGebuehr_GetraenkeVerpackung_Glas_970' , 'the var_additionalTaxType_TabakSteuer_450' , 'the var_additionalTaxType__SOTA_Gebuehren_465' , 'the var_additionalTaxTypeTabakpraeventionsfonds_470' , 'the var_additionalTaxType_Banderolensteuer_460' , 'the var_additionalTaxType_Biersteuer_480' }
   and "11" is getBemessungsCodeZusatzabgabe( the type of ADDITONALTAX , the key of ADDITONALTAX ) of REFDATA 
   and ( the grossMass of POSITION isNotNull
   and the quantity of ADDITONALTAX isNotNull
   and the grossMass of POSITION is not the quantity of ADDITONALTAX )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R147 Bemessungscode 24
  
Description:
Wenn der Bemessungsgrundlagencode 24 ist, dann muessen Zusatzabgabenart und -schluessel gesetzt sein, die Menge muss gleich Eigenmasse sein und die Volumentprozent duerfen nicht gesetzt sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of POSITION is the positions nr of this additional tax ;
   set 'REFDATA' to a ref data ;
if
   true is not ( the key of ADDITONALTAX isNotNull
   and the key of ADDITONALTAX is not one of REFDATA .getRefZusatzabgabenSchluessel( the type of ADDITONALTAX ) )
   and true is not ( "9999.9999" is not the commodityCode of POSITION 
   and true is not checkRefTarifNumber of REFDATA with the commodityCode of POSITION )
   and true is not ( the statisticalCode of POSITION is not one of getRefTarifKeyNumber( the commodityCode of POSITION ) of REFDATA 
   and "9999.9999" is not the commodityCode of POSITION )
   and the type of ADDITONALTAX is not one of { 'the var_additionalTaxType_Vorgezogene_EntsorgungsGebuehr_GetraenkeVerpackung_Glas_970' , 'the var_additionalTaxType_TabakSteuer_450' , 'the var_additionalTaxType__SOTA_Gebuehren_465' , 'the var_additionalTaxTypeTabakpraeventionsfonds_470' , 'the var_additionalTaxType_Banderolensteuer_460' , 'the var_additionalTaxType_Biersteuer_480' }
   and "24" is getBemessungsCodeZusatzabgabe( the type of ADDITONALTAX , the key of ADDITONALTAX ) of REFDATA 
   and the quantity of ADDITONALTAX isNotNull
   and the netMass of POSITION isNotNull
   and the quantity of ADDITONALTAX is not the netMass of POSITION 
then
   'the result' .setPositionError( the positions nr of ADDITONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R148 Bemessungscode 12 bis 23
  
Description:
Wenn der Bemessungsgrundlagencode zwischen 12 und 23 ist, dann muessen Zusatzabgabenart und -schluessel gesetzt sein, die Menge muss gleich Zusatzmenge sein und die Volumentprozent duerfen nicht gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
   set 'REFDATA' to a ref data ;
if
   "9999.9999" is not the commodityCode of POSITION 
   and ( all of the following conditions are true :
         - the commodityCode of POSITION checkRefTarifNr is true 
         - the statisticalCode of POSITION is one of getRefTarifKeyNumber( the commodityCode of POSITION ) of REFDATA , )
   and ( all of the following conditions are true :
         - the type of ADDITONALTAX isNotNull
         - the key of ADDITONALTAX is one of REFDATA .getRefZusatzabgabenSchluessel( the type of ADDITONALTAX ) , )
   and ( all of the following conditions are true :
         - the type of ADDITONALTAX is not one of { 'the var_additionalTaxType_Vorgezogene_EntsorgungsGebuehr_GetraenkeVerpackung_Glas_970' , 'the var_additionalTaxType_TabakSteuer_450' , 'the var_additionalTaxType__SOTA_Gebuehren_465' , 'the var_additionalTaxTypeTabakpraeventionsfonds_470' , 'the var_additionalTaxType_Banderolensteuer_460' , 'the var_additionalTaxType_Biersteuer_480' }
         - ( getBemessungsCodeZusatzabgabe( the type of ADDITONALTAX , the key of ADDITONALTAX ) of REFDATA isNotNull
         and getBemessungsCodeZusatzabgabe( the type of ADDITONALTAX , the key of ADDITONALTAX ) of REFDATA is one of { "12" , "13" , "14" , "15" , "16" , "17" , "18" , "19" , "20" , "22" , "23" } )
         - ( the quantity of ADDITONALTAX isNotNull
         and the additionalUnit of POSITION isNotNull
         and the quantity of ADDITONALTAX is not the additionalUnit of POSITION ) , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R149a Zusatzabgaben vollstaendig
  
Description:
Wenn Zusatzabgaben angegeben werden, muss die Art, die Menge und der Schluessel angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'ADDITIONALTAX' to an additional tax ;
if
   ( any of the following conditions is true :
         - the type of ADDITIONALTAX isNotNull
         - ( the quantity of ADDITIONALTAX isNotNull
         and 0 is not the quantity of ADDITIONALTAX )
         - the key of ADDITIONALTAX isNotNull , )
   and ( any of the following conditions is true :
         - the type of ADDITIONALTAX isNull
         - ( the quantity of ADDITIONALTAX isNull
         or 0 is the quantity of ADDITIONALTAX )
         - the key of ADDITIONALTAX isNull , )
then
   'the result' .setPositionError( the positions nr of ADDITIONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITIONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R149b Zusatzabgabenart 280
  
Description:
Wenn die Zusatzabgabenart 280 ist, dann muss Volumenprozent gesetzt sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'ADDITIONALTAX' to an additional tax ;
if
   'the var_additionalTaxType_Monopolgebuehren_280' is the type of ADDITIONALTAX 
   and any of the following conditions is true :
         - the alcoholLevel of ADDITIONALTAX isNull
         - 0 is the alcoholLevel of ADDITIONALTAX ,
then
   'the result' .setPositionError( the positions nr of ADDITIONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITIONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R149c Zusatzabgabenart ohne Volumenpronzente
  
Description:
Wenn die Zusatzabgabenart gleich 290, 450, 460, 465, 470, 480, 600-640, 660, 700, 710, 720, 730, 790 oder 970 ist, dann darf Volumenprozent nicht angemeldet werden.   
Status:
deployable
Locale:
en_US
 
definitions
   set 'ADDITIONALTAX' to an additional tax ;
if
   ( the type of ADDITIONALTAX is one of { 'the var_additionalTaxType_Grenztieraerztliche_Untersuchungsgebuehren_290' , 'the var_additionalTaxType_TabakSteuer_450' , 'the var_additionalTaxType_Banderolensteuer_460' , 'the var_additionalTaxType__SOTA_Gebuehren_465' , 'the var_additionalTaxTypeTabakpraeventionsfonds_470' , 'the var_additionalTaxType_Biersteuer_480' , 'the var_additionalTaxType_Automobilsteuer_660' , 'the var_addtionalTaxType_Lenkungsabgabe_VOC_700' , 'the var_additionalTaxType_710' , 'the var_additionalTaxType_720' , 'the var_additionalTaxType_730' , 'the var_additionalTaxType_790' , 'the var_additionalTaxType_Vorgezogene_EntsorgungsGebuehr_GetraenkeVerpackung_Glas_970' }
   or the type of ADDITIONALTAX is between 'the var_additionalTaxType_MineralOelSteuer_600' and 'the var_additionalTaxType_MineralOelSteuer_Brennstoffe_AndereMinaralOel_Produkte_640' )
   and ( the alcoholLevel of ADDITIONALTAX isNotNull
   and 0 is not the alcoholLevel of ADDITIONALTAX )
then
   'the result' .setPositionError( the positions nr of ADDITIONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITIONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R150 Zusatzabgabenart 700
  
Description:
Wenn die Zusatzabgabenart 700 und die Eigenmasse angegeben ist, dann muss die Zusatzabgabenmenge kleiner oder gleich der Eigenmasse sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ROUNDED_NETMASS' to plausi helpers.roundUp( the netMass of POSITION , 1 ) ;
if
   POSITION has any additionalTaxes is true 
   and 'the var_addtionalTaxType_Lenkungsabgabe_VOC_700' is one of the additionalTaxTypes of POSITION 
   and the netMass of POSITION isNotNull
   and 0 is not the netMass of POSITION 
   and POSITION .getZusatzabgabenmengeProArt( 'the var_addtionalTaxType_Lenkungsabgabe_VOC_700' ) isNotNull
   and POSITION .getZusatzabgabenmengeProArt( 'the var_addtionalTaxType_Lenkungsabgabe_VOC_700' ) is more than ROUNDED_NETMASS 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R151 Zusatzabgabenart 280
  
Description:
WENN Zusatzabgabenart 280 (MG) UND Zusatzmenge verwendet
DANN Summe der Zusatzabgabenmenge aller 280 pro Tarifzeile gleich gross wie Zusatzmenge der Tarifzeile

1. Es werden nur die ganzen Beträge miteinander vergliche, die Nachkommastellen werden weggelassen.
2. Gewährung einer Toleranz von -5 Einheiten bzw. + 5 Einheiten
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   POSITION has any additionalTaxes is true 
   and 'the var_additionalTaxType_Monopolgebuehren_280' is one of the additionalTaxTypes of POSITION 
   and the additionalUnit of POSITION isNotNull
   and 0 is not the additionalUnit of POSITION 
   and POSITION .getZusatzabgabenmengeProArt( 'the var_additionalTaxType_Monopolgebuehren_280' ) isNotNull
   and ( POSITION .getZusatzabgabenmengeProArt( 'the var_additionalTaxType_Monopolgebuehren_280' ) is less than ( the additionalUnit of POSITION - 5 )
   or POSITION .getZusatzabgabenmengeProArt( 'the var_additionalTaxType_Monopolgebuehren_280' ) is more than ( the additionalUnit of POSITION + 5 ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R152 Gebuehren vollstaendig
  
Description:
Wenn eine Gebuehr angegeben ist, dann muss die Art, die Menge und der Ansatz angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'FEE' to a fee ;
if
   ( any of the following conditions is true :
         - the type of FEE isNotNull
         - ( the quantity of FEE isNotNull
         and 0 is not the quantity of FEE )
         - ( the rate of FEE isNotNull
         and ZERO is not the rate of FEE ) , )
   and ( any of the following conditions is true :
         - the type of FEE isNull
         - the quantity of FEE isNull
         - 0 is the quantity of FEE 
         - the rate of FEE isNull
         - ZERO is the rate of FEE , )
then
   'the result' .setPositionError( the positions nr of FEE , "1" , 'the check_fee' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of FEE , 'the ref_goodsItem_fee' , the name of this rule ) ;
  
  
 
Rule: R156 Lagercode
  
Description:
Wenn der Lagercode gem. Stammdaten erforderlich ist, dann muss der Lagercode angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   REFDATA .isLagercodeNecessary( the commodityCode of POSITION , the statisticalCode of POSITION ) is true 
   and the storageType of POSITION is not one of { "1" , "2" , "3" , "4" , "5" }
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_mineral_oil_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_storageType' , the name of this rule ) ;
  
  
 
Rule: R158 Unterlagen bei Praeferenz
  
Description:
Wenn die Praeferenz gleich 1 ist, muss entweder der Unterlagencode 3, 861, 862, 865, 866 oder 954 angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   "1" is the preference of POSITION 
   and all of the following conditions are true :
         - 'the var_documentType_Qualitaetzeugnis_3' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_861_Ursprungszeugnis' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_862_Ursprungserklaerung' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_APS-Ursprungszeugnis_865' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_Statement_on_Origin_866' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is one of the documentTypes of POSITION is false ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_producedDocument' , the name of this rule ) ;
  
  
 
Rule: R158 Unterlagen bei Praeferenz_old
  
Description:
Wenn die Praeferenz gleich 1 ist, muss entweder der Unterlagencode 3, 861, 862, 865 oder 954 angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   "1" is the preference of POSITION 
   and all of the following conditions are true :
         - 'the var_documentType_Qualitaetzeugnis_3' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_861_Ursprungszeugnis' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_862_Ursprungserklaerung' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_APS-Ursprungszeugnis_865' is one of the documentTypes of POSITION is false 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is one of the documentTypes of POSITION is false ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_producedDocument' , the name of this rule ) ;
  
  
 
Rule: R159 Nettoveranlagung Zollnettogewicht
  
Description:
Wenn die Nettoveranlagung gleich 1 ist, dann muss das Zollnettogewicht angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   "1" is the netDuty of POSITION 
   and any of the following conditions is true :
         - the customsNetWeight of POSITION isNull
         - 0 is the customsNetWeight of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_net_duty' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_customsNetWeight' , the name of this rule ) ;
  
  
 
Rule: R160 Nettogewicht Eigenmasse
  
Description:
Das Nettogewicht muss groesser oder gleich der Eigenmasse sein und muss kleiner oder gleich der Rohmasse sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   all of the following conditions are true :
         - the netMass of POSITION isNotNull
         - the customsNetWeight of POSITION isNotNull
         - getEineNachkommastelle( the customsNetWeight of POSITION ) of POSITION isNotNull
         - getEineNachkommastelle( the netMass of POSITION ) of POSITION isNotNull
         - ( getEineNachkommastelle( the customsNetWeight of POSITION ) of POSITION is less than getEineNachkommastelle( the netMass of POSITION ) of POSITION 
         or the grossMass of POSITION is less than the customsNetWeight of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_net_duty' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_customsNetWeight' , the name of this rule ) ;
  
  
 
Rule: R161 Nettoverzollung Tarazuschlag
  
Description:
Bei Nettoveranlagung muss der Tarazuschlag TZ, sofern er nicht eindeutig ist, übermittelt und mit dem Richtigcode TZ bestätigt werden. 
Wird keine Nettoveranlagung beantragt, darf der TZ nicht übermittelt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   any of the following conditions is true :
         - ( the tareSupplement of POSITION isNotNull
         and "1" is not the tareSupplementConfirmation of POSITION )
         - ( the tareSupplement of POSITION isNull
         and "1" is the tareSupplementConfirmation of POSITION )
         - ( the tareSupplement of POSITION isNotNull
         and "1" is not the netDuty of POSITION )
         - ( the tareSupplement of POSITION isNull
         and "1" is the netDuty of POSITION 
         and 1 is not the number of elements in REFDATA .getTarazuschlaege( the commodityCode of POSITION ) ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_net_duty' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_tareSupplement' , the name of this rule ) ;
  
  
 
Rule: R162 SC1 nicht erlaubte Angaben
  
Description:
Bei Abfertigungstyp 1 darf der Zollbeguenstigungscode und nicht angegeben und die Warennummer nicht 9999.9999 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_no' is the repair of this position 
         and 'the var_customsClearanceType_Normalveranlagung_1' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - ( the customsFavourCode of POSITION isNotNull
         and "0" is not the customsFavourCode of POSITION )
         - 'the var_Mustersendung_9999_9999' is the commodityCode of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific1' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R163 Detail ID und Postition
  
Description:
Die Detail-ID muss pro Zollanmeldung und Version eindeutig vergeben sein und es muss mindestens eine Position vorhanden sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
if
   ( the detail ID of POSITION isNull
   or 'the helper_def_Space_String' is the detail ID of POSITION )
   or ( 'the var_correctionCode_Erstuebermittlung_1' is the correctionCode of HEADER 
   and false is detail IDs are unique of HEADER )
   or ( 'the var_correctionCode_Korrektur_2' is the correctionCode of HEADER 
   and true is is correction from declarant of HEADER 
   and false is detail IDs are unique of HEADER )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_detail_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_traderItemID' , the name of this rule ) ;
  
  
 
Rule: R165 Veranlagungstyp
  
Description:
Wenn der Veranlagungstyp  11 angemeldet ist, duerfen Veranlagungstypen 1, 2, 3, 5, 6, 7, 8 oder 10 nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
if
   ( any of the following conditions is true :
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' is the customsClearanceType of POSITION , )
   and the number of elements in the abfertigungs typens of HEADER is more than 1 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_detail_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R166 Begruendung Praeferenz
  
Description:
Wenn die Begruendung 1,2,3 oder 4 ist, dann muss die Praeferenz 0 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
if
   ( any of the following conditions is true :
         - 'the var_reason_Ursprungsnachweis_Laender_EU_1' is the reason of HEADER 
         - 'the var_reason_Ursprungsnachweis_Laender_EFTA_2' is the reason of HEADER 
         - 'the var_reason_Ursprungsnachweis_Laender_aFHA_3' is the reason of HEADER 
         - 'the var_reason_Ursprungsnachweis_Entwicklungslaender_4' is the reason of HEADER , )
   and "0" is not the preference of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_detail_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_reason' , the name of this rule ) ;
  
  
 
Rule: R167 Direktbefoerderung
  
Description:
Kontrolle der Direktbefoerderungsklausel bei Praeferenzabfertigung.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   ( all of the following conditions are true :
         - "1" is the preference of POSITION 
         - the originCountry of POSITION is not the dispatchCountry of HEADER 
         - 1 is at most the number of elements in getDirektbefoerderungForZollansatz( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION , "PR" , "J" ) of REFDATA , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_general_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R167c Direktversand Praeferenzveranlagung Ueberseeabkommen
  
Description:
Wenn der Richtigcode Erzeugungsland = 0 oder null (nicht gesetzt) und TN > 2500.0000 und < 9999.9999 Praeferenzcode = 1 und Ursprungsland eines von  (KR, CA, MX, BW, LS, NA, SZ, ZA, CL, SG, JP, PE, CO, HK, UA, CN, BH, QA, KW, OM, SA, AE, BA) und das Erzeugungsland nicht dem Ursprungsland entspricht, dann Fehler
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
if
   ( the correctionCodeDispatchCountry of HEADER isNull
   or "0" is the correctionCodeDispatchCountry of HEADER 
   or "" is the correctionCodeDispatchCountry of HEADER )
   and plausi helpers.isInNumberRange( the commodityCode of POSITION , "2500.0000" , "9999.9999" )
   and 'the var_preference_yes_1' is the preference of POSITION 
   and the originCountry of POSITION is one of { "KR" , "CA" , "MX" , "BW" , "LS" , "NA" , "SZ" , "ZA" , "CL" , "SG" , "JP" , "PE" , "CO" , "HK" , "UA" , "CN" , "BH" , "QA" , "KW" , "OM" , "SA" , "AE" , "BA" }
   and the dispatchCountry of HEADER is not the originCountry of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_general_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_country' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_dispatchCountry' , the name of this rule ) ;
  
  
 
Rule: R168 Verlagerungsverfahren
  
Description:
Wenn der MWSt-Code gleich 90 (Verlagerungsverfahren) oder 91 (Veredelungsverkehr) ist, dann muss die MWSt-Nummer angegeben sein, sonst ist die Nummer optional.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
if
   ( any of the following conditions is true :
         - 'the var_VATCode_Verlagerungsverfahren_MWST_90' is the VATCode of POSITION 
         - 'the var_VATCode_Lohnveredelung_im_Nichterhebungsverfahren_MWST_91' is the VATCode of POSITION , )
   and ( any of the following conditions is true :
         - the VATNumber of HEADER isNull
         - 'the helper_def_empty_String' is the VATNumber of HEADER 
         - 'the helper_def_Space_String' is the VATNumber of HEADER , )
then
   'the result' .setHeaderError( "1" , 'the check_general_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATNumber' , the name of this rule ) ;
  
  
 
Rule: R170a NZE-Pflicht 1
  
Description:
Wenn der NZE-Pflichtcode 1 ist, muss der NZE-Artencode angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
         and 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header ;
   set 'POSITION' to a position ;
if
   'the var_nonCustomsLawObligation_mit_Kontrolle_vor_Freigabe_1' is the nonCustomsLawObligation of POSITION 
   and 1 is more than the number of elements in the nonCustomsLawTypes of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_non_customs_law' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_nonCustomsLaw' , the name of this rule ) ;
  
  
 
Rule: R170b NZE-Artencodes obligatorisch
  
Description:
Wenn NZE-Artencode gem. Stammdaten obligatorisch, dann muessen die entsprechenden Artencodes angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'HEADER' to a header
      where 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
         and 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header ;
   set 'REFDATA' to a ref data ;
if
   plausi helpers.containsAll( getNZEObliArtenCodes( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION ) of REFDATA , the nonCustomsLawTypes of POSITION ) is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_non_customs_law' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_nonCustomsLaw' , the name of this rule ) ;
  
  
 
Rule: R171 Einfuhrzollanmeldung in Intervention
  
Description:
Wenn die Einfuhrzollanmeldung in Intervention ist, dann darf kein Berichtigungscode 0 oder 2 gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where the statusOfDeclaration of this header isNotNull ;
if
   'the var_correctionCode_Erstuebermittlung_1' is not the correctionCode of HEADER 
   and "in Intervention" is the statusOfDeclaration of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R172a Zusatzabgaben obligatorisch
  
Description:
Wenn kein Lagercode angegeben oder Lagercode 1 oder 2 und Zusatzabgabenart -schluessel und Ursprungsland gem. Stammdaten obligatorisch sind, muss Art, Schluessel und Menge angegeben werden und fuer die angemeldete Tarifnummer und Warenschluessel gueltig sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "9999.9999" is not the commodityCode of POSITION 
   and checkZusatzabgabenObli( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION , the additionalTaxes of POSITION ) of REFDATA is false 
   and any of the following conditions is true :
         - the storageType of POSITION isNull
         - "1" is the storageType of POSITION 
         - "2" is the storageType of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R172b Zusatzabgaben obligatorisch
  
Description:
Wenn kein Lagercode angegeben oder Lagercode 1 oder 2 und Zusatzabgabenart -schluessel und Ursprungsland gem. Stammdaten gruppenplichtig sind, muss eine Zusatzabgabe pro Gruppe und fuer die angemeldete Tarifnummer und Warenschluessel gueltig sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "9999.9999" is not the commodityCode of POSITION 
   and REFDATA .checkZusatzabgebenGruppenpflichten( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION , the additionalTaxes of POSITION ) is false 
   and any of the following conditions is true :
         - the storageType of POSITION isNull
         - "1" is the storageType of POSITION 
         - "2" is the storageType of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R172c Richtigcode Zusatzabgabe obligatorisch
  
Description:
Wenn keine Zusatzabgaben in den Stammdaten enthalten sind und Zusatzabgaben angegeben sind, dann muss der Richtigcode für Zusatzabgabenansatz vorhanden sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where this position is zusatz abgabe ac9 is false ;
   set 'ADDITIONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
   set 'REFDATA' to a ref data ;
if
   "1" is not the rateConfirmation of ADDITIONALTAX 
   and isZusatzabgabenPreviewed( the commodityCode of POSITION , the statisticalCode of POSITION , the originCountry of POSITION , the type of ADDITIONALTAX , the key of ADDITIONALTAX ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R173 SC4 Ursprungsland
  
Description:
Wenn der Abfertigungstyp 10 oder 11 ist, dann muss das Ursprungsland CH sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   "CH" is not the originCountry of POSITION 
   and any of the following conditions is true :
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' is the customsClearanceType of POSITION 
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' is the customsClearanceType of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific4' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R174 SC4 Zollansatz
  
Description:
Wenn der Veranlagungstyp 10 oder 11 ist, dann muss der Zollansatz angegeben sein und der Richtigcode muss gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( any of the following conditions is true :
         - the rate of POSITION isNull
         - "1" is not the rateConfirmation of POSITION , )
   and ( any of the following conditions is true :
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' is the customsClearanceType of POSITION 
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' is the customsClearanceType of POSITION , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific4' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R175 SC4 nicht erlaubte Angaben
  
Description:
Bei Veranlagungstyp 10 oder 11 darf die Warennummer nicht 9999.9999 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_no' is the repair of this position 
         and the customsClearanceType of this position isNotNull
         and the customsClearanceType of this position is one of { 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' } ;
if
   any of the following conditions is true :
         - 'the var_Mustersendung_9999_9999' is the commodityCode of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific4' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R176 nur Zollbeguenstigung moeglich
  
Description:
Wenn gem. Stammdaten nur Zollbeguenstigungsveranlagung moeglich, dann muss der Veranlagungstyp 5 (Zollbegünstigung), 2 (Veredelungsverkehr), 10 (Rückwaren gemäss Zollrecht) oder 11 (Rückwaren gemäss Zoll-/MWST-Recht) angegeben sein. (Da die Warennummer 9999.9999 nicht im Tarif beschrieben ist, faellt sie nicht unter diese Regeln.)
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where all of the following conditions are true :
               - 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
               - 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header , ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "2" is REFDATA .getZBTypCode( the commodityCode of POSITION )
   and 'the var_Mustersendung_9999_9999' is not the commodityCode of POSITION 
   and the customsClearanceType of POSITION is not one of { 'the var_customsClearanceType_Veredelungsverkehr_2' , 'the var_customsClearanceType__Aussberungsverkehr_3' , 'the var_customsClearanceType_Zollerleichterung_5' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' }
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_detail_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_customsFavourCode' , the name of this rule ) ;
  
  
 
Rule: R177 SC5 Zollbeguenstigungscode notwendig
  
Description:
Wenn der Veranlagungstyp 5 ist, dann muss der Zollbeguenstigungscode angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Zollerleichterung_5' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - the customsFavourCode of POSITION isNull
         - 'the helper_def_empty_String' is the customsFavourCode of POSITION 
         - "0" is the customsFavourCode of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific5' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R178 SC5 Zollbeguenstigungsart 1
  
Description:
Wenn der Zollbeguenstigungsartencode 1 ist, dann muss eine Bewilligung mit Typ 5 und Stelle 98 angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Zollerleichterung_5' is the customsClearanceType of this position ;
   set 'REFDATA' to a ref data ;
if
   "1" is one of REFDATA .getZBArtenCode( the commodityCode of POSITION , the customsFavourCode of POSITION )
   and isBewilligungsTypAndNumberAndStellenCodeInList( 'the var_permitType_Verwendungspflichtig_5' , null string , 'the var_permitAuthority_EZV andere _Andere_98' ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific5' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R179 SC5 nicht erlaubte Angaben
  
Description:
Bei Veranlagungstyp 5 und keiner Ausbesserung darf die Warennummer nicht 9999.9999 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Zollerleichterung_5' is the customsClearanceType of this position 
         and 'the var_repair_no' is the repair of this position ;
if
   any of the following conditions is true :
         - 'the var_Mustersendung_9999_9999' is the commodityCode of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific5' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R181 SC7 Zollansatz
  
Description:
Wenn der Veranlagungstyp 7 ist, muss der Zollansatz "0" angegeben werden
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_ZollfreieVeranlagung_gem_ ZG_7' is the customsClearanceType of this position ;
if
   none of the following conditions are true :
         - the rate of POSITION isNull
         - ZERO is the rate of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific7' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R182 SC7 nicht erlaubte Angaben
  
Description:
Bei Veranlagungstyp 7 und keiner Ausbesserung duerfen Zollbeguenstigungscode und Art der Veredelung/Ausbesserung nicht angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_ZollfreieVeranlagung_gem_ ZG_7' is the customsClearanceType of this position 
         and 'the var_repair_no' is the repair of this position ;
if
   any of the following conditions is true :
         - ( the customsFavourCode of POSITION isNotNull
         and "0" is not the customsFavourCode of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific7' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R183a SC8 Abgabenbefreiung
  
Description:
Wenn der Veranlagungstyp 8 ist, dann muss der Zollansatz 0 sein, der MWST-Code 3 und der Handelswarencode 2. Die Rohmasse und der statistische Wert muessen angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_AbgabeFrei_8' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - ( the rate of POSITION isNotNull
         and ZERO is not the rate of POSITION )
         - 'the var_VATCode_Steuerfrei_3' is not the VATCode of POSITION 
         - 'the var_commercialGood_Nichthandelsware_2' is not the commercialGood of POSITION 
         - ( the grossMass of POSITION isNull
         or 0 is the grossMass of POSITION )
         - ( the statisticalValue of POSITION isNull
         or ZERO is the statisticalValue of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific8' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R183b SC8 Abgabenbefreiung
  
Description:
Bei Veranlagungstyp 8 und keiner Ausbesserung duerfen Zollbeguenstigungscode, Lagercode,Zollnettogewicht, Nettoverzollung, Tarazuschlag und Statistischer Schluessel nicht angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_no' is the repair of this position 
         and 'the var_customsClearanceType_AbgabeFrei_8' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - 0 is not the statisticalCode of POSITION 
         - ( the customsNetWeight of POSITION isNotNull
         and 0 is not the customsNetWeight of POSITION )
         - the storageType of POSITION isNotNull
         - ( the customsFavourCode of POSITION isNotNull
         and "0" is not the customsFavourCode of POSITION )
         - ( the netDuty of POSITION isNotNull
         and "0" is not the netDuty of POSITION )
         - ( the tareSupplement of POSITION isNotNull
         and 0 is not the tareSupplement of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific8' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R184 Einfuhrzollanmeldung in Berechtigung
  
Description:
Wenn eine Einfuhrzollanmeldung in Berechtigung ist, dann darf der Berechtigungscode nicht 0 oder 2 sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   'the var_correctionCode_Erstuebermittlung_1' is not the correctionCode of HEADER 
   and "in Korrektur" is the statusOfDeclaration of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R185 Einfuhrzollanmeldung in Berechtigungsanfrage
  
Description:
Wenn eine Einfuhrzollanmeldung in wartend auf Akzeptanz ist, dann darf der Berechtigungscode nicht 0 oder 2 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   'the var_correctionCode_Erstuebermittlung_1' is not the correctionCode of HEADER 
   and "wartend auf Akzeptanz" is the statusOfDeclaration of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_version' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_correctionCode' , the name of this rule ) ;
  
  
 
Rule: R190 SC2 Bewilligung der Stelle 98
  
Description:
Wenn Verkehrsrichtung = 1 (aktiv) oder 2 (passiv) und Verfahrenstyp = 1, dann muss Bewilligungstyp und -nummer angegeben sein und Bew.stellencode muss 98 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of this position ;
if
   the direction of POSITION is one of { "1" , "2" }
   and "1" is the processType of POSITION 
   and isBewilligungsTypAndNumberAndStellenCodeInList( null string , null string , 'the var_permitAuthority_EZV andere _Andere_98' ) of POSITION is false 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R191 SC2 Abrechnungstyp 1
  
Description:
Wenn der Abfertigungstyp = 2, Abrechnungstyp = 1 und Verkehrsrichtung = 1 (aktiv) ist, dann muss der Zollansatz 0 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of this position ;
if
   'the var_billingType_Nichterhebung_1' is the billingType of POSITION 
   and 'the var_direction_activ_1' is the direction of POSITION 
   and ZERO is not the rate of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R193 SC2 nicht erlaubte Angaben
  
Description:
n der Abfertigungstyp = 2, dann darf die TN 9999.9999 nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of this position ;
if
   "9999.9999" is the commodityCode of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R198 SC3 Handelsware 2
  
Description:
Bei Ausbesserung muss der Handelswarencode 2 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_yes' is the repair of this position ;
if
   'the var_commercialGood_Nichthandelsware_2' is not the commercialGood of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific3' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R201 SC6 nicht erlaubte Angaben
  
Description:
Bei Veranlagungstyp 6 und keiner Ausbesserung darf Zollbeguenstigungscode nicht angegeben und die Warennummer nicht 9999.9999 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_no' is the repair of this position 
         and 'the var_customsClearanceType_Tabak_6' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - ( the customsFavourCode of POSITION isNotNull
         and "0" is not the customsFavourCode of POSITION )
         - 'the var_Mustersendung_9999_9999' is the commodityCode of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific1' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R203 Zusatzinformation
  
Description:
Gültige Zusatzinformationen gem. Stammdaten
Status:
deployable
Locale:
en_US
 
definitions
   set 'GOODS ITEM DETAILS' to a goods item detail ;
   set 'REFDATA' to a ref data common ;
if
   ( ( the code of 'GOODS ITEM DETAILS' isNull
   or 'the helper_def_empty_String' is the code of 'GOODS ITEM DETAILS' )
   and ( the name of 'GOODS ITEM DETAILS' isNotNull
   and 'the helper_def_empty_String' is not the name of 'GOODS ITEM DETAILS' ) )
   or ( ( the code of 'GOODS ITEM DETAILS' isNotNull
   and 'the helper_def_empty_String' is not the code of 'GOODS ITEM DETAILS' )
   and ( the name of 'GOODS ITEM DETAILS' isNull
   or 'the helper_def_empty_String' is the name of 'GOODS ITEM DETAILS' ) )
   or ( 0 is the number of elements in getGoodsItemCodes( the name of 'GOODS ITEM DETAILS' ) of REFDATA 
   and ( the code of 'GOODS ITEM DETAILS' isNull
   or 'the helper_def_empty_String' is the code of 'GOODS ITEM DETAILS' ) )
   or ( the number of elements in getGoodsItemCodes( the name of 'GOODS ITEM DETAILS' ) of REFDATA is more than 0 
   and the code of 'GOODS ITEM DETAILS' is not one of getGoodsItemCodes( the name of 'GOODS ITEM DETAILS' ) of REFDATA )
   or the name of 'GOODS ITEM DETAILS' is not one of the refAllGoodsItemDetailNames of REFDATA 
then
   'the result' .setPositionError( the positions nr of 'GOODS ITEM DETAILS' , "1" , 'the check_additional_information' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of 'GOODS ITEM DETAILS' , 'the ref_goodsItem_details' , the name of this rule ) ;
  
  
 
Rule: R204 Zusatzinformation
  
Description:
Wenn bei angemeldeter Tarifnummer-Schlüssel-Kombination eine Zusatzinformation gem. Stammdaten notwendig ist, dann muss diese angegeben sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header
      where 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is not the clearancelocation of this header 
         and 'the var_clearanceLocation_Veranlagung_von_Amtes_wegen_4' is not the clearancelocation of this header ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   false is plausi helpers.containsAll( getWarenDetailNamen( the commodityCode of POSITION , the statisticalCode of POSITION ) of REFDATA , the waren detail namens of POSITION )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_additional_information' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_details' , the name of this rule ) ;
  
  
 
Rule: R205 SC2 notwendige Angaben
  
Description:
Bei Veranlagungstyp 2 muessen Verkehrsrichtung, Veredlungstyp, Abrechnungstyp und Verfahrenstyp angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where the customsClearanceType of this position isNotNull
         and 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of this position ;
if
   any of the following conditions is true :
         - ( the direction of POSITION isNull
         or 'the helper_def_empty_String' is the direction of POSITION )
         - ( the refinementType of POSITION isNull
         or 'the helper_def_empty_String' is the refinementType of POSITION )
         - ( the billingType of POSITION isNull
         or 'the helper_def_empty_String' is the processType of POSITION )
         - ( the processType of POSITION isNull
         or 'the helper_def_empty_String' is the processType of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_direction' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_refinementType' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_processType' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_billingType' , the name of this rule ) ;
  
  
 
Rule: R206 SC3 notwendige Angaben
  
Description:
Bei Ausbesserung=1 muessen Verkehrsrichtung und Art der Veredelung angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position
      where 'the var_repair_yes' is the repair of this position ;
if
   any of the following conditions is true :
         - ( the direction of POSITION isNull
         or 'the helper_def_empty_String' is the direction of POSITION )
         - ( the repairReason of POSITION isNull
         or 'the helper_def_empty_String' is the repairReason of POSITION ) ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific3' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_statistic_customsClearanceType' , the name of this rule ) ;
  
  
 
Rule: R207 provisorische Frist
  
Description:
Die provisorische Frist darf nur verwendet werden, wenn der Anmeldungstyp 2 ist (provisorisch).
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   'the var_declarationType_provisorisch_2' is not the declarationType of HEADER 
   and HEADER is has provisorische frist is true 
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
  
  
 
Rule: R208 SC2 Verfahrenstyp
  
Description:
Wenn Veranlagungstyp 2, Verkehrsrichtung = 1 (aktiv), MwSt.-Code nicht 3 (Steuerfrei) und es keine Ausbesserung ist, dann muss der Verfahrenstyp = 1 (ordentlich) und das Feld Handelsware muss = 1 (Handelsware) sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position
      where 'the var_repair_no' is the repair of this position 
         and 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of this position ;
if
   all of the following conditions are true :
         - 'the var_direction_activ_1' is the direction of POSITON 
         - 'the var_VATCode_Steuerfrei_3' is not the VATCode of POSITON 
         - ( 'the var_commercialGood_Handelsware_1' is not the commercialGood of POSITON 
         or 'the var_processType_Ordentlich_1' is not the processType of POSITON ) ,
then
   'the result' .setPositionError( the positions nr of POSITON , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITON , 'the ref_goodsItem_repairAndRefinement_processType' , the name of this rule ) ;
  
  
 
Rule: R210a GEB Nummer und Kurzname
  
Description:
Wenn Bewilligungstyp 2 (Generaleinfuhrbewilligung) und Bewilligungsstelle 1 (BLW) ist, dann muss Generaleinfurhbewilligungsnummer (GEB-Nr) existieren 
und der GEB-Inhaber muss im Importeurnamen (importer/ name), Empfaengernamen (consignee/ name) oder Zwischenhaendlernamen 
(permit/ additionalInformation) stehen. Ausgenommen sind bestimmte GEB-Nr.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - "1" is the permitAuthority of PERMIT 
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "660000" , "740000" ) is false 
         - containsGeb( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - "1" is the permitAuthority of PERMIT 
         - isGEBAbrechenbar( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is true 
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "660000" , "740000" ) is false 
         - containsKurzname( the importerName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
         - containsKurzname( the consigneeName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
         - containsKurzname( the additionalInformation of PERMIT , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false , )
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210b GEB Nummer erlaubt fuer Verarbeitungscode
  
Description:
Wenn Bewilligungstyp = 2 (Generaleinfuhrbewilligung) oder 3 (Generallizenz) und Verarbeitungscode für Tarifnummer/Schlüssel in Stammdaten, 
dann muss die Bewilligungsnummer im Bereich liegen, der für diesen Verarbeitungscode definiert ist.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   the permitType of PERMIT isNotNull
   and REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON ) isNotNull
   and ( ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         or 'the var_permitType_Generallizenz_3' is the permitType of PERMIT )
         - 1 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1001" , "3999" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         or 'the var_permitType_Generallizenz_3' is the permitType of PERMIT )
         - 4 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999" ) is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - 5 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - 6 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - 8 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - 9 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , )
   or ( all of the following conditions are true :
         - 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
         - 11 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 18 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1001" , "29999" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 19 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "103000" , "199999" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 50 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "50000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 51 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "100001" , "120000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 52 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "120001" , "140000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 53 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "140001" , "160000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 54 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "160001" , "180000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 57 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "300001" , "320000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 58 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "320001" , "340000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 59 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "340001" , "360000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 60 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "360001" , "380000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 61 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "380001" , "400000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 62 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "400001" , "420000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 63 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "420001" , "440000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 64 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "440001" , "460000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 65 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "460001" , "480000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 66 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "600001" , "620000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 67 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "620001" , "640000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 68 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "640001" , "660000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 69 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "660001" , "680000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 70 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "680001" , "700000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 71 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "800001" , "820000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 72 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "820001" , "840000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 73 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "840001" , "860000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 75 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "60001" , "80000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 76 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "80001" , "100000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 77 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "700001" , "720000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 78 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "720001" , "740000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 79 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "860001" , "870000" ) is false , )
   or ( all of the following conditions are true :
         - ( 'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT )
         - 90 is REFDATA .getVerarbeitungscode( the commodityCode of POSITON , the statisticalCode of POSITON )
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1" , "999999" ) is false , ) )
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210c Nummer eistiert für réservesuisse
  
Description:
Wenn Bewilligungstyp 2 (Generaleinfuhrbewilligung) und Bewilligungsstelle 2 (résérvesuisse) ist, dann muss Generaleinfurhbewilligungsnummer (GEB-Nr) existieren.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
   and "22" is the permitAuthority of PERMIT 
   and false is containsGeb( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210d GEB Inhaber Kurzname korrekt für résérvesuisse
  
Description:
Wenn Bewilligungstyp 2 (Generaleinfuhrbewilligung) und Bewilligungsstelle 22 (résérvesuisse) ist und die GEB-Nummer nicht gleich 47998, 47999, 89998, 89999, 
119998, 119999, 139998, 139999, 159998, 159999, 179998 oder 179999 ist, dann muss der GEB-Inhaber Kurzname im Importeurnamen (importer/ name) stehen.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_Generalbewilligung_2' is the permitType of PERMIT 
   and "22" is the permitAuthority of PERMIT 
   and the permitNumber of PERMIT is not one of { "47998" , "47999" , "89998" , "89999" , "119998" , "119999" , "139998" , "139998" , "159998" , "159998" , "179998" , "179998" }
   and containsKurzname( the importerName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210e Bewilligungs Nummer existiert fuer Minoest
  
Description:
Wenn der Bewilligungstyp 9 (Biotreibstoffbewilligung) und die Bewilligungsstelle 96 (MinÖst) ist, 
dann muss die Bewilligungsnummer existieren gemäss den Stammdaten.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_NachweisBioTreibstoff_9' is the permitType of PERMIT 
   and 'the var_permitAuthority_EZVMinOest_96' is the permitAuthority of PERMIT 
   and containsGeb( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210f Bewilligungs Inhaber Kurzname korrekt fuer Minoest
  
Description:
Wenn der Bewilligungstyp 9 (Biotreibstoffbewilligung) und Bewilligungsstelle 96 (MinÖst) sind, dann muss der Bewilligungs-Inhaber im Importeurnamen (importer/ name) stehen.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_NachweisBioTreibstoff_9' is the permitType of PERMIT 
   and 'the var_permitAuthority_EZVMinOest_96' is the permitAuthority of PERMIT 
   and containsKurzname( the importerName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210g Bewilligungs Nummer existiert fuer EAV
  
Description:
Wenn Bewilligungstyp 6 (Verpflichtung) und Bewilligungstelle 2 (EAV) ist, dann muss die Bewilligungs-Nr. Steuerlager existieren.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_Verpflichtung_6' is the permitType of PERMIT 
   and "2" is the permitAuthority of PERMIT 
   and containsBewNr( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210h Bewilligungs Nummer existiert fuer Tabak
  
Description:
Wenn Bewilligungstyp 4 (Revers Tabak) UND Bewilligungsstelle 21 (OZD S Tabak) UND Zusatzabgabenschlüssel 201 oder 202 
DANN muss Bewiligungsnummer existieren gem. Stammdaten
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_ReversTabak_4' is the permitType of PERMIT 
   and 'the var_permitAuthority_SektionTabakBierbesteuerung_21' is the permitAuthority of PERMIT 
   and containsBewNr( the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
   and any of the following conditions is true :
         - 'the var_addtionalTaxTypeKey_201' is one of the additionalTaxKeys of POSITON 
         - 'the var_addtionalTaxTypeKey_202' is one of the additionalTaxKeys of POSITON ,
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210i Bewilligungs Nummer existiert fuer ESTV
  
Description:
Wenn Bewilligungstyp 6 (Verpflichtung) und Bewilligungsstelle 80 (ESTV - Eidg. Steuerverwaltung)
DANN muss Bewiligungsnummer existieren gem. Stammdaten und der Importeurname muss der richtige sein (der Kurzname muss entweder im Feld Importeurname, Importeuradresszusatz1, Importeuradresszusatz2 oder ImporteurStrasse enthalten sein).
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_Verpflichtung_6' is the permitType of PERMIT 
   and "80" is the permitAuthority of PERMIT 
   and containsBewKurzname( the importerName of HEADER , the importerAddressSupplement1 of HEADER , the importerAddressSupplement2 of HEADER , the importerStreet of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT , the importerTraderIdentificationNumber of HEADER , the VATNumber of HEADER ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210j Bewilligungs Nummer existiert fuer EZV Minoest
  
Description:
Wenn Bewilligungstyp 7 (Bewilligung zur periodischen Steueranmeldung) und Bewilligungsstelle 96 (EZV Minöst - Eidg. Zollverwaltung: Minöst) 
DANN muss die angemeldete Bewilligungsnummer in dem Bewilligungsnummern-Bereichen (1000-3999 und 20004-20990) liegen
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
if
   'the var_permitType_BewilligungPeriodischeSteueranmeldung_7' is the permitType of PERMIT 
   and 'the var_permitAuthority_EZVMinOest_96' is the permitAuthority of PERMIT 
   and all of the following conditions are true :
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "1000" , "3999" ) is false 
         - plausi helpers.isInNumberRange( the permitNumber of PERMIT , "20004" , "20990" ) is false ,
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210k Bewilligungs Nummer existiert fuer EZV
  
Description:
Wenn Bewilligungstyp 8 ((beso) Verpflichtung Minöst) und Bewilligungsstelle 96 (EZV Minöst - Eidg. Zollverwaltung: Minöst) DANN muss die angemeldete Bewilligungsnummer in dem Bewilligungsnummern-Bereichen (20000-29999und 70000-79999) liegen
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
if
   'the var_permitType_besoVerpflichtungMinoest_8' is the permitType of PERMIT 
   and 'the var_permitAuthority_EZVMinOest_96' is the permitAuthority of PERMIT 
   and plausi helpers.isInNumberRange( the permitNumber of PERMIT , "20000" , "29999" ) is false 
   and plausi helpers.isInNumberRange( the permitNumber of PERMIT , "70000" , "79999" ) is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210l GEB Inhaber korrekt und existiert fuer EZV VOC
  
Description:
Wenn Bewilligungstyp 6 (Verpflichtung) und Bewilligungsstelle 97 (EZV VOC - Eidg. Zollverwaltung: VOC) DANN muss Bewiligungsnummer existieren gem. Stammdaten.UND der GEB-Inhaber muss im Importeurnamen oder Empfängernamen stehen
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITON' to a position ;
   set 'REFDATA' to a ref data ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
if
   'the var_permitType_Verpflichtung_6' is the permitType of PERMIT 
   and 'the var_permitAuthority_EZV_VOC_97' is the permitAuthority of PERMIT 
   and ( containsBewKurzname( the importerName of HEADER , the importerAddressSupplement1 of HEADER , the importerAddressSupplement2 of HEADER , the importerStreet of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
   and containsBewKurzname( the consigneeName of HEADER , the consigneeAddressSupplement1 of HEADER , the consigneeAddressSupplement2 of HEADER , the consigneeStreet of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false )
   and all of the following conditions are true :
         - plausi helpers.isInNumberRange( the importerName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) is false 
         - plausi helpers.isInNumberRange( the consigneeName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) is false ,
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
  
  
 
Rule: R210m Anwendungsverhinderung bestimmter Bewilligungsnummern
  
Description:
Bei den TN 2204.2121, 2204.2131, 2204.2141, 2204.2921, 2204.2922, 2204.2931 und 2204.2932 dürfen die Bewilligungsnummern 479995 und 479998 nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
if
   the commodityCode of POSITON is one of { "2204.2121" , "2204.2131" , "2204.2141" , "2204.2221" , "2204.2222" , "2204.2231" , "2204.2232" , "2204.2923" , "2204.2924" , "2204.2933" , "2204.2934" }
   and the permitNumber of PERMIT is one of { "479995" , "479998" }
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210m Anwendungsverhinderung bestimmter Bewilligungsnummern_old
  
Description:
Bei den TN 2204.2121, 2204.2131, 2204.2141, 2204.2221, 2204.2222, 2204.2231, 2204.2232, 2204.2923, 2204.2924, 2204.2933 und 2204.2934 dürfen die Bewilligungsnummern 479995 und 479998 nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITON' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITON ;
if
   the commodityCode of POSITON is one of { "2204.2121" , "2204.2131" , "2204.2141" , "2204.2921" , "2204.2922" , "2204.2931" , "2204.2932" }
   and the permitNumber of PERMIT is one of { "479995" , "479998" }
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R210n Bewilligungskontrolle Carbura
  
Description:
WENN Bewilligungstyp 3 und Bewilligungsstelle 8 und Rohmasse > 20kg
DANN muss Bewiligungsnummer existieren gem. Stammdaten. 
UND der GEB-Inhaber muss im Importeurnamen stehen. 
->Sofern Bewilligungsnummer nicht zwischen 3000 und 3999 ist, dann wird Kurzname nicht überprüft.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit isNotNull
         and the positions nr of this permit is the positions nr of POSITION 
         and plausi helpers.isInNumberRange( the permitNumber of this permit , "3000" , "3999" ) is false ;
   set 'REFDATA' to a ref data ;
if
   'the var_permitType_Generallizenz_3' is the permitType of PERMIT 
   and 'the var_permitAuthority_Carbura_8' is the permitAuthority of PERMIT 
   and containsKurzname( the importerName of HEADER , the permitNumber of PERMIT , the permitAuthority of PERMIT ) of REFDATA is false 
then
   'the result' .setPositionError( the positions nr of PERMIT , "1" , 'the check_permit' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PERMIT , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R211 Konti Barzahlung
  
Description:
Wenn Konto Zoll 0 ist, muss auch das Konto MWST 0 sein und umgekehrt
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( "0" is the customsAccount of HEADER 
   and "0" is not the VATAccount of HEADER )
   or ( "0" is not the customsAccount of HEADER 
   and "0" is the VATAccount of HEADER )
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R212b Konti Vorversion
  
Description:
Wenn der Berichtigungscode 2 oder 0 ist, und die Zollanmeldung schon abgerechnet ist, darf das Konto Zoll und das Konto MWST nicht von oder nach Barzahler geändert werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( all of the following conditions are true :
         - ( "0" is the correctionCode of HEADER 
         or "2" is the correctionCode of HEADER )
         - HEADER declaration state is/was 'abgerechnet' or 'korrigiert nach abrechnung' is true , )
   and ( any of the following conditions is true :
         - ( "0" is the customsAccount of HEADER 
         and "0" is not the customsAccountPreviousVersion of HEADER )
         - ( "0" is the VATAccount of HEADER 
         and "0" is not the VATAccountPreviousVersion of HEADER )
         - ( "0" is not the customsAccount of HEADER 
         and "0" is the customsAccountPreviousVersion of HEADER )
         - ( "0" is not the VATAccount of HEADER 
         and "0" is the VATAccountPreviousVersion of HEADER ) , )
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R213 Praeferenzansatz vorhanden
  
Description:
Wenn der Veranlagungstyp nicht 10 oder 11 ist und die Präferenzveranlagung beantragt wird (Flag origin/preference = 1) und Ursprungsland (origin/orignCountry) nicht Schweiz oder Lichtenstein ist, muss Praeferenzansatz gem. Stammdaten vorhanden sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   ( all of the following conditions are true :
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' is not the customsClearanceType of POSITION 
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' is not the customsClearanceType of POSITION 
         - "1" is the preference of POSITION 
         - the originCountry of POSITION is not one of { "CH" , "FL" , "LI" }
         - checkRefPraeferenz( the commodityCode of POSITION , the originCountry of POSITION , the customsFavourCode of POSITION , the statisticalCode of POSITION ) of REFDATA is false , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R214 VVM vor Abrechnung nicht definiert
  
Description:
Wenn Berichtigungscode 2 oder 0 (Annullierung oder Berichtigung), und Berichtigung vom Zoll vor Abrechung, dann darf VVM nicht neu ausgestellt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   all of the following conditions are true :
         - ( 'the var_correctionCode_Annullation_0' is the correctionCode of HEADER 
         or 'the var_correctionCode_Korrektur_2' is the correctionCode of HEADER )
         - is correction from declarant of HEADER is false 
         - HEADER declaration state is/was 'abgerechnet' or 'korrigiert nach abrechnung' is false 
         - HEADER create new VAT debit isNotNull
         - ( HEADER create new VAT debit is true 
         or HEADER create new VAT debit is false ) ,
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
  
  
 
Rule: R215 VVM nach Abrechung definiert
  
Description:
Wenn Berichtigungscode 2 oder 0 (Annullierung oder Berichtigung), und Berichtigung vom Zoll nach Abrechung, dann muss angegeben werden, ob ein VVM neu ausgestellt werden soll oder nicht.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   all of the following conditions are true :
         - ( 'the var_correctionCode_Annullation_0' is the correctionCode of HEADER 
         or 'the var_correctionCode_Korrektur_2' is the correctionCode of HEADER )
         - false is is correction from declarant of HEADER 
         - true is HEADER declaration state is/was 'abgerechnet' or 'korrigiert nach abrechnung'
         - HEADER create new VAT debit isNull ,
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
  
  
 
Rule: R216 VVM bei Wechsel von provisorisch auf definitv
  
Description:
Wenn Anmeldungstyp 1 (definitiv) und Vorversion mit Anmeldungstyp 2 (provisorisch) und Berichtigung durch Zoll nach Abrechnung, dann muss eine neue VVM ausgestellt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   all of the following conditions are true :
         - 'the var_declarationType_definitv_1' is the declarationType of HEADER 
         - 'the var_declarationType_provisorisch_2' is the declarationTypePreviousVersion of HEADER 
         - HEADER declaration state is/was 'abgerechnet' or 'korrigiert nach abrechnung' is true 
         - is correction from declarant of HEADER is false 
         - ( HEADER create new VAT debit isNull
         or HEADER create new VAT debit is false ) ,
then
   'the result' .setHeaderError( "1" , 'the check_other_header' , the name of this rule ) ;
  
  
 
Rule: R217 Gueltigkeitsperiode Tarifnummer
  
Description:
Wenn die Warennummer <> 9999.9999 (Mustersendung) dann muss das Anmeldedatum der Erstübermitlung der EZA sich innerhalb der Gültigkeitsperiode der Tarifnummer gem. Stammdaten befinden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   all of the following conditions are true :
         - "9999.9999" is not the commodityCode of POSITION 
         - false is checkTN8Gueltigkeit( the commodityCode of POSITION , the acceptanceDate of HEADER ) of REFDATA ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_commodityCode' , the name of this rule ) ;
  
  
 
Rule: R219 MWST-Code 91 nur bei aktivem Lohnveredelungsverkehr
  
Description:
Der Mehrwertsteuer-Code 91 darf nur bei Veranlagungstyp =2 (Veredelungsverkehr), Verkehrsrichtung = 1 (aktiv) und Veredelungstyp = 2 (Lohnv.v) angegeben sein
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   'the var_VATCode_Lohnveredelung_im_Nichterhebungsverfahren_MWST_91' is the VATCode of POSITION 
   and any of the following conditions is true :
         - 'the var_customsClearanceType_Veredelungsverkehr_2' is not the customsClearanceType of POSITION 
         - 'the var_direction_activ_1' is not the direction of POSITION 
         - 'the var_refinementType_Lohnveredelungsverkehr_2' is not the refinementType of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_direction' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_refinementType' , the name of this rule ) ;
  
  
 
Rule: R220a Zusatzabgaben-Ansatz bei Tabaksteuer oder Pflanzenschutz gesetzt
  
Description:
Zusatzabgaben Ansatz (additionalTax/rate) bei Tabaksteuer oder Pflanzenschutz gesetzt
Status:
deployable
Locale:
en_US
 
definitions
   set 'ADDITONALTAX' to an additional tax ;
if
   all of the following conditions are true :
         - ( 'the var_additionalTaxType_TabakSteuer_450' is the type of ADDITONALTAX 
         or 'the var_additionalTaxType_790' is the type of ADDITONALTAX )
         - the rate of ADDITONALTAX isNull ,
then
   'the result' .setPositionError( the positions nr of ADDITONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R220b Zusatzabgaben-Ansatz und Richtigcode
  
Description:
Wenn der Zusatzabgaben-Ansatz angemeldet wird, dann muss der Richtigcode Zusatzabgaben-Ansatz gesetzt (=1) sein. Sonst darf der Richtigcode nicht gesetzt werden. Ausgenommen sind Zusatzabgaben typen 450, 465 und 470
Status:
deployable
Locale:
en_US
 
definitions
   set 'ADDITONALTAX' to an additional tax
      where the type of this additional tax is not one of { 'the var_additionalTaxType_TabakSteuer_450' , 'the var_additionalTaxType__SOTA_Gebuehren_465' , 'the var_additionalTaxTypeTabakpraeventionsfonds_470' } ;
if
   any of the following conditions is true :
         - ( the rate of ADDITONALTAX isNotNull
         and "1" is not the rateConfirmation of ADDITONALTAX )
         - ( the rate of ADDITONALTAX isNull
         and "1" is the rateConfirmation of ADDITONALTAX ) ,
then
   'the result' .setPositionError( the positions nr of ADDITONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R222 Gebuehren 991 992 994 950 885 980 958 670 956 nicht erlaubt
  
Description:
Gebührenart 885, 950, 980, 991, 992, 994, 956, 958, oder 670 darf nicht angemeldet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'FEE' to a fee ;
if
   the type of FEE is one of { 'the var_feeType_TotalBussenverteilerKreisdirektion_950' , 'the var_feeType_885' , 'the var_feeType_Rueckerstattungsgebuehr_980' , 'the var_feeType_BarhinterlagenAbt_991' , 'the var_feeType_BarhinterlagenAusgang_992' , 'the var_feeType_Rueckerstattungen_994' , 'the var_feeType_Artenschutz_Bussen_958' , 'the var_feeType_Tierseuchenges_Bussen_956' , 'the var_feeType_670' }
then
   'the result' .setPositionError( the positions nr of FEE , "1" , 'the check_fee' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of FEE , 'the ref_goodsItem_fee' , the name of this rule ) ;
  
  
 
Rule: R223 Zusatzabgaben-Menge bei Automobilsteuer
  
Description:
Bei der R223 Description: Wenn Zusatzabgabenart 660 (Automobilsteuer) ist, dann muss Zusatzabgabenmenge >= statistischer Wert sein. 
(grösser oder gleich stat. Wert)
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITONALTAX' to an additional tax
      where the positions nr of this additional tax isNotNull
         and the positions nr of this additional tax is the positions nr of POSITION 
         and the quantity of this additional tax isNotNull ;
if
   all of the following conditions are true :
         - 'the var_additionalTaxType_Automobilsteuer_660' is the type of ADDITONALTAX 
         - the quantity of ADDITONALTAX is less than the amount of the statisticalValue of POSITION ,
then
   'the result' .setPositionError( the positions nr of ADDITONALTAX , "1" , 'the check_additional_tax' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of ADDITONALTAX , 'the ref_goodsItem_additionalTax' , the name of this rule ) ;
  
  
 
Rule: R224 Nettoveranlagung Bemessungscode
  
Description:
Wenn bei Nettoveranlagung 1 (ja) gewählt ist, dann muss die Bemessungsgrundlage je 100 kg brutto sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   "1" is the netDuty of POSITION 
   and "1" is not REFDATA .getBemessungsCodeTarif( the commodityCode of POSITION , the originCountry of POSITION , the customsFavourCode of POSITION , the preference of POSITION , the statisticalCode of POSITION )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_net_duty' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_netDuty' , the name of this rule ) ;
  
  
 
Rule: R225 SC4 Zollansatz 0 und Praeferenz
  
Description:
Wenn der Veranlagungstyp 10 (Rückwaren gemaess Zollrecht) oder 11 (Rückwaren gemäss Zoll-/MWST-Recht) 
und der Zollansatz nicht Fr. 0.00 ist, dann darf die Praeferenz nicht gesetzt sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   all of the following conditions are true :
         - the customsClearanceType of POSITION is one of { 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' , 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' }
         - ZERO is not the rate of POSITION 
         - 'the var_preference_yes_1' is the preference of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_net_duty' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R226a Richtigcode bei Unterlagen ohne Praeferenz
  
Description:
Wenn Art-Unterlagencode = 865 (APS), 866 (SoO), 954 (EUR.1), 862 (Ursprungserklärung), 861 (Ursprungszeugnis) oder 3 (Qualitätszeugnis), dann muss die Praeferenz = 1 (ja) sein, ausser der Richtigcode Praeferenz ist gesetzt.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( all of the following conditions are true :
         - 'the var_preference_yes_1' is not the preference of POSITION 
         - "1" is not the preferenceConfirmation of POSITION , )
   and any of the following conditions is true :
         - 'the var_documentType_Qualitaetzeugnis_3' is one of the documentTypes of POSITION 
         - 'the var_documentType_861_Ursprungszeugnis' is one of the documentTypes of POSITION 
         - 'the var_documentType_862_Ursprungserklaerung' is one of the documentTypes of POSITION 
         - 'the var_documentType_APSUrsprungszeugnis_865' is one of the documentTypes of POSITION 
         - 'the var_documentType_Statement_on_Origin_866' is one of the documentTypes of POSITION 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is one of the documentTypes of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R226a Richtigcode bei Unterlagen ohne Praeferenz_old
  
Description:
Wenn Art-Unterlagencode = 865 (APS), 954 (EUR.1), 862 (Ursprungserklärung), 861 (Ursprungszeugnis) oder 3 (Qualitätszeugnis), dann muss die Praeferenz = 1 (ja) sein, ausser der Richtigcode Praeferenz ist gesetzt.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( all of the following conditions are true :
         - 'the var_preference_yes_1' is not the preference of POSITION 
         - "1" is not the preferenceConfirmation of POSITION , )
   and any of the following conditions is true :
         - 'the var_documentType_Qualitaetzeugnis_3' is one of the documentTypes of POSITION 
         - 'the var_documentType_861_Ursprungszeugnis' is one of the documentTypes of POSITION 
         - 'the var_documentType_862_Ursprungserklaerung' is one of the documentTypes of POSITION 
         - 'the var_documentType_APSUrsprungszeugnis_865' is one of the documentTypes of POSITION 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is one of the documentTypes of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R226b Richtigcode ohne Praeferenz ohne Unterlagen
  
Description:
Wenn Präferenz = 0, null (nicht gesetzt) und Richtigcode Präferenz = 1 (ja), dann müssen Unterlagen vorgelegt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   all of the following conditions are true :
         - 'the var_preference_yes_1' is not the preference of POSITION 
         - ( the preferenceConfirmation of POSITION isNotNull
         and "1" is the preferenceConfirmation of POSITION )
         - 0 is the number of elements in the documentTypes of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_producedDocument' , the name of this rule ) ;
  
  
 
Rule: R227 Vorgelegte Unterlagen vollstaendig
  
Description:
Wenn Art-Unterlagencode = 865 (APS), 866 (SoO), 954 (EUR.1), 862 (Ursprungserklärung), 861 (Ursprungszeugnis), 853 (tieraerztliches Gesundheitszeugnis) oder 3 (Qualitätszeugnis), dann müssen Datum und Referenz der Dokumente angemeldet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'PRODUCEDDOCUMENTS' to a produced documents ;
if
   ( any of the following conditions is true :
         - 'the var_documentType_Qualitaetzeugnis_3' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_861_Ursprungszeugnis' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_862_Ursprungserklaerung' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_APSUrsprungszeugnis_865' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_Statement_on_Origin_866' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_tieraerztliches_Gesundheitszeugnis_853' is the documentType of PRODUCEDDOCUMENTS , )
   and ( any of the following conditions is true :
         - the issueDate of PRODUCEDDOCUMENTS isNull
         - the documentReferenceNumber of PRODUCEDDOCUMENTS isNull
         - 'the helper_def_empty_String' is the documentReferenceNumber of PRODUCEDDOCUMENTS 
         - 'the helper_def_Space_String' is the documentReferenceNumber of PRODUCEDDOCUMENTS , )
then
   'the result' .setPositionError( the positions nr of PRODUCEDDOCUMENTS , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PRODUCEDDOCUMENTS , 'the ref_goodsItem_producedDocument' , the name of this rule ) ;
  
  
 
Rule: R227 Vorgelegte Unterlagen vollstaendig_old
  
Description:
Wenn Art-Unterlagencode = 865 (APS), 954 (EUR.1), 862 (Ursprungserklärung), 861 (Ursprungszeugnis), 853 (tieraerztliches Gesundheitszeugnis) oder 3 (Qualitätszeugnis), dann müssen Datum und Referenz der Dokumente angemeldet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'PRODUCEDDOCUMENTS' to a produced documents ;
if
   ( any of the following conditions is true :
         - 'the var_documentType_Qualitaetzeugnis_3' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_861_Ursprungszeugnis' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_862_Ursprungserklaerung' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_APSUrsprungszeugnis_865' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_EUR1_Warenverkehrsbescheinigung_954' is the documentType of PRODUCEDDOCUMENTS 
         - 'the var_documentType_tieraerztliches_Gesundheitszeugnis_853' is the documentType of PRODUCEDDOCUMENTS , )
   and ( any of the following conditions is true :
         - the issueDate of PRODUCEDDOCUMENTS isNull
         - the documentReferenceNumber of PRODUCEDDOCUMENTS isNull
         - 'the helper_def_empty_String' is the documentReferenceNumber of PRODUCEDDOCUMENTS 
         - 'the helper_def_Space_String' is the documentReferenceNumber of PRODUCEDDOCUMENTS , )
then
   'the result' .setPositionError( the positions nr of PRODUCEDDOCUMENTS , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of PRODUCEDDOCUMENTS , 'the ref_goodsItem_producedDocument' , the name of this rule ) ;
  
  
 
Rule: R228 Mineraloelsteuer Bewilligung Schluessel
  
Description:
Angaben bei Bewilligungen fehlen / sind ungültig (Bewilligungstyp 8 und Stellencode 96) im Rahmen der Verpflichtung Minöst (beso) in Verbindung mit Lagercode 1, ZB-Typ 4 und Zusatzabgabenschlüssel.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'ADDITIONALTAX' to an additional tax
      where the positions nr of this additional tax is the positions nr of POSITION ;
   set 'REFDATA' to a ref data ;
if
   ( all of the following conditions are true :
         - "1" is the storageType of POSITION 
         - "4" is REFDATA .getZBTypCode( the commodityCode of POSITION )
         - isBewilligungsTypAndNumberAndStellenCodeInList( "8" , null string , "96" ) of POSITION is false , )
   and the key of ADDITIONALTAX is one of { "800" , "880" , "881" , "882" , "883" , "884" , "885" , "886" , "887" , "888" , "891" , "892" , "895" , "911" , "912" , "915" , "916" , "917" , "918" , "980" , "981" , "982" }
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_origin' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R229 Meldestelle nur bei Veredelungsverkehr
  
Description:
Wenn Veranlagungstyp = 2 und Verfahrenstyp 1 (ordentliches Verfahren), dann muss Feld Meldestelle eine gültige Zollstellennummer gem. Stammdaten enthalten. Sonst darf die Meldestelle nicht verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'REFDATA' to a ref data ;
if
   ( 'the var_customsClearanceType_Veredelungsverkehr_2' is the customsClearanceType of POSITION 
   and ( the processType of POSITION isNotNull
   and 'the var_processType_Ordentlich_1' is the processType of POSITION )
   and any of the following conditions is true :
         - ( 0 is the number of elements in the notificationCodes of POSITION )
         - ( ( plausi helpers.containsAll( the notificationCodes of POSITION , the ref meldestellencodes of REFDATA ) is false )
         and 0 is not the number of elements in the notificationCodes of POSITION ) , )
   or ( the number of elements in the notificationCodes of POSITION is at least 1 
   and any of the following conditions is true :
         - 'the var_processType_Ordentlich_1' is not the processType of POSITION 
         - 'the var_customsClearanceType_Veredelungsverkehr_2' is not the customsClearanceType of POSITION , )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_processType' , the name of this rule ) ;
  
  
 
Rule: R230 Zollbeguenstigung nicht moeglich
  
Description:
Wenn Veranlagungstyp nicht gleich  10 oder 11 und Ursprungsland enthalten in (CH, FL, LI) dann darf keine Präferenz angegeben werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( all of the following conditions are true :
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zollrecht_10' is not the customsClearanceType of POSITION 
         - 'the var_customsClearanceType_Rueckwaren_gemaess_Zoll_MWST_Recht_11' is not the customsClearanceType of POSITION , )
   and the originCountry of POSITION is one of { "CH" , "FL" , "LI" }
   and 'the var_preference_yes_1' is the preference of POSITION 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_detail_cross' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_origin_preference' , the name of this rule ) ;
  
  
 
Rule: R235 Verkehrszweig
  
Description:
Wenn Veranlagungsart Post = standard (3), dann muss der Verkehrszweig = Postverkehr (5) sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   'the var_processType_Besonders_3' is the procedureType of HEADER 
   and 'the var_transportMode_Postverkehr_5' is not the transportMode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_transportMeans_mode' , the name of this rule ) ;
  
  
 
Rule: R236 Vorpapier Art = IPV
  
Description:
Wenn das Feld Vorpapier Art = IPV (Import Postverkehr) ist, dann muss die Spediteurnummer (8200, 5906, 9007, 9013, 7081, 7082, 9405, 9406, 9407, 1000779, 1000780, 1000781, 1000782, 1000871, 7083, 8199, 9408, 1000557, 1000334, 9411, 9412, 8197, 8198 oder 1000711) sein.Wenn die Spediteurnummer (8200, 5906, 9007, 9013, 7081, 7082, 9405, 9406, 9407, 9408, 1000779, 1000780, 1000781, 1000782, 1000871, 7083, 8199, 1000557, 1000334, 9411, 9412, 8197, 8198 oder 1000711) angemeldet wird, dann muss das Feld Vorpapier Art = IPV (Import Postverkehr) sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( 'the var_processType_Besonders_3' is the procedureType of HEADER 
   and "IPV" is one of ( the previousDocumentsType_Lists of HEADER )
   and the declarantTraderIdentificationNumber of HEADER is not one of { "5906" , "7083" , "7081" , "8199" , "7082" , "8200" , "9007" , "9013" , "9405" , "9406" , "9407" , "9408" , "1000557" , "1000711" , "1000779" , "1000780" , "1000781" , "1000782" , "1000871" , "1000334" , "9411" , "9412" , "8197" , "8198" } )
   or ( 'the var_processType_Besonders_3' is the procedureType of HEADER 
   and "IPV" is not one of ( the previousDocumentsType_Lists of HEADER )
   and the declarantTraderIdentificationNumber of HEADER is one of { "5906" , "7083" , "7081" , "8199" , "7082" , "8200" , "9007" , "9013" , "9405" , "9406" , "9407" , "9408" , "1000557" , "1000711" , "1000779" , "1000780" , "1000781" , "1000782" , "1000871" , "1000334" , "9411" , "9412" , "8197" , "8198" } )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_previousDocument_type' , the name of this rule ) ;
  
  
 
Rule: R237 Verzollungart in Stammdaten
  
Description:
Gültige Veranlagungsart Post gem. Stammdaten
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   the procedureType of HEADER isNotNull
   and the procedureType of HEADER is not one of the verzollungs arten codes of REFDATA 
then
   'the result' .setHeaderError( "1" , 'the check_reference_data' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_postalShipment_type' , the name of this rule ) ;
  
  
 
Rule: R241 MwSt-Konto in Vorversionen (Konzessionaer)
  
Description:
Wenn Berichtigungscode 2 oder 0 (Berichtigung oder Annulierung), und das MwSt-Konto ist von einem Konzessionär 
dann muss in der Vorversion auch das MwSt-Konto von einem Konzessionär sein oder umgekehrt.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and the VATAccountPreviousVersion of HEADER isNotNull
   and isAccountKonzessionaer( the VATAccount of HEADER ) of REFDATA is not isAccountKonzessionaer( the VATAccountPreviousVersion of HEADER ) of REFDATA 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
  
  
 
Rule: R242 Zoll-Konto in Vorversionen (Konzessionaer)
  
Description:
Wenn Berichtigungscode 2 oder 0 (Berichtigung oder Annulierung), und das Zoll-Konto ist von keinem Konzessionär 
dann muss in der Vorversion auch das Zoll-Konto von keinem Konzessionär sein oder umgekehrt.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and the customsAccountPreviousVersion of HEADER isNotNull
   and isAccountKonzessionaer( the customsAccount of HEADER ) of REFDATA is not isAccountKonzessionaer( the customsAccountPreviousVersion of HEADER ) of REFDATA 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R243a MwSt-Konto nur dem Spediteur zugeordnet
  
Description:
Das MwSt.Konzessionärskonto darf genau nur dem angemeldeten Spediteur zugewiesen sein und muss den Status aktiv haben.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and isKonzessionaerAccountOnlyRelatedToSpediteur( the VATAccount of HEADER ) of REFDATA is false 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
  
  
 
Rule: R243b Zoll-Konto nur dem Spediteur zugeordnet
  
Description:
Das Zoll-Konzessionärskonto darf genau nur dem angemeldeten Spediteur zugewiesen sein und muss den Status aktiv haben.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and isKonzessionaerAccountOnlyRelatedToSpediteur( the customsAccount of HEADER ) of REFDATA is false 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R244a MwSt Konzessionaerskonto aktiv
  
Description:
Wenn das MwSt.-Konzessionärskonto nicht aktiv ist, dann darf dieses für Erstübermittlungen nicht benutzt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and isKonzessionaerAccountActive( the VATAccount of HEADER ) of REFDATA is false 
   and 'the var_correctionCode_Erstuebermittlung_1' is the correctionCode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
  
  
 
Rule: R244b Zoll Konzessionaerskonto aktiv
  
Description:
Wenn das Zoll-Konzessionärskonto nicht aktiv ist, dann darf dieses für Erstübermittlungen nicht benutzt werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
   set 'REFDATA' to a ref data ;
if
   'the var_procedureType_standard_3' is the procedureType of HEADER 
   and isKonzessionaerAccountActive( the customsAccount of HEADER ) of REFDATA is false 
   and 'the var_correctionCode_Erstuebermittlung_1' is the correctionCode of HEADER 
then
   'the result' .setHeaderError( "1" , 'the check_authorisation' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R245 Vorpapier Art = IPV nur einmal
  
Description:
Vorpapier Art = ipv (Import Postverkehr) darf nur einmal pro Einfuhrzollanmeldung verwendet werden.
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   false is plausi helpers.containsAtMostOnce( the previousDocumentsType_Lists of HEADER , "IPV" )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_previousDocument_type' , the name of this rule ) ;
  
  
 
Rule: R246 Barzahler
  
Description:
WENN die Veranlagungsart Post = standard (3) oder der Veranlagungsort =3 (nachträgliche Erfassung ED) ist, DANN darf die Konto Nr. 0 (Barzahler) nicht angemeldet werden (weder im Feld Konto Zoll noch im Feld Konto MWST)
Status:
deployable
Locale:
en_US
 
definitions
   set 'HEADER' to a header ;
if
   ( 'the var_procedureType_standard_3' is the procedureType of HEADER 
   and any of the following conditions is true :
         - "0" is the customsAccount of HEADER 
         - "0" is the VATAccount of HEADER , )
   or ( 'the var_clearanceLocation_Erfassung_ab_Einheitsdokument_3' is the clearancelocation of HEADER 
   and any of the following conditions is true :
         - "0" is the customsAccount of HEADER 
         - "0" is the VATAccount of HEADER , )
then
   'the result' .setHeaderError( "1" , 'the check_dependency' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_VATAccount' , the name of this rule ) ;
   'the result' .appendReferencedElement( 'the ref_business_customsAccount' , the name of this rule ) ;
  
  
 
Rule: R247 MWST-Code 92
  
Description:
Der Mehrwertsteuer-Code 92 darf nur bei Veranlagungstyp = 2 (Veredelungsverkehr), Verkehrsrichtung = 2 (passiv), Verfahrenstyp = 1 (ordentliches Verfahren), Abrechnungstyp = 1 (Nichterhebung), Zollansatz = 0.0SFr und Handelsware = 2 (nicht Handelsware).
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   'the var_VATCode_Nachtraegliche_Steuerveranlagung_92' is the VATCode of POSITION 
   and any of the following conditions is true :
         - 'the var_customsClearanceType_Veredelungsverkehr_2' is not the customsClearanceType of POSITION 
         - 'the var_direction_passiv_2' is not the direction of POSITION 
         - ZERO is not the rate of POSITION 
         - 'the var_processType_Ordentlich_1' is not the processType of POSITION 
         - 'the var_commercialGood_Nichthandelsware_2' is not the commercialGood of POSITION 
         - 'the var_billingType_Nichterhebung_1' is not the billingType of POSITION ,
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific2' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_direction' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_repairAndRefinement_processType' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R249a MWST-Wert Tabak
  
Description:
Wenn die Tarifnummer 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910 oder 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnumer 3824.9999 und der Statistische Schlüssel 912 ist, dann darf der MWST-Wert nicht grösser als Fr. 1000.00 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9999" is the commodityCode of POSITION ) )
   and the amount of the VATValue of POSITION is more than 1000 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_VATValue' , the name of this rule ) ;
  
  
 
Rule: R249a MWST-Wert Tabak_old
  
Description:
Wenn die Tarifnummer 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910 oder 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnumer 3824.9098 und der Statistische Schlüssel 912 ist, dann darf der MWST-Wert nicht grösser als Fr. 1000.00 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9098" is the commodityCode of POSITION ) )
   and the amount of the VATValue of POSITION is more than 1000 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_VATValue' , the name of this rule ) ;
  
  
 
Rule: R249b Rohmasse Tabak
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910, 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9999 und der Statistische Schlüssel = 912, dann darf die Rohmasse nicht grösser als 10 kg sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9999" is the commodityCode of POSITION ) )
   and the grossMass of POSITION is more than 10 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_grossMass' , the name of this rule ) ;
  
  
 
Rule: R249b Rohmasse Tabak_old
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910, 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9098 und der Statistische Schlüssel = 912, dann darf die Rohmasse nicht grösser als 10 kg sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9098" is the commodityCode of POSITION ) )
   and the grossMass of POSITION is more than 10 
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_grossMass' , the name of this rule ) ;
  
  
 
Rule: R249c Revers Tabak Stat Schlüssel = 911
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910 und 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9999 und der Statistische Schlüssel = 912 ist, dann darf der Bewilligungstyp 4 / Bewilligungsstelle 21 nicht angemeldet werden (Revers Tabak).
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit is the positions nr of POSITION ;
if
   ( 'the var_permitType_ReversTabak_4' is the permitType of PERMIT 
   and 'the var_permitAuthority_SektionTabakBierbesteuerung_21' is the permitAuthority of PERMIT )
   and ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9999" is the commodityCode of POSITION ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R249c Revers Tabak Stat Schlüssel = 911_old
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000, 2403.1100, 2403.1900, 2403.9910 und 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9098 und der Statistische Schlüssel = 912 ist, dann darf der Bewilligungstyp 4 / Bewilligungsstelle 21 nicht angemeldet werden (Revers Tabak).
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
   set 'PERMIT' to a permit
      where the positions nr of this permit is the positions nr of POSITION ;
if
   ( 'the var_permitType_ReversTabak_4' is the permitType of PERMIT 
   and 'the var_permitAuthority_SektionTabakBierbesteuerung_21' is the permitAuthority of PERMIT )
   and ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9098" is the commodityCode of POSITION ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_permit' , the name of this rule ) ;
  
  
 
Rule: R249d Zollansatz Tabak
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000,  2403.1100, 2403.1900, 2403.9910 oder 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9999 und der Statistische Schlüssel = 912 ist, dann muss der Zollansatz Fr. 0.00 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( the rate of POSITION isNull
   or ZERO is not the rate of POSITION )
   and ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9999" is the commodityCode of POSITION ) )
then
   'the result' .setPositionError( the positions nr of POSITION , "1" , 'the check_specific6' , the name of this rule ) ;
   'the result' .appendReferencedElement( the positions nr of POSITION , 'the ref_goodsItem_valuation_rate' , the name of this rule ) ;
  
  
 
Rule: R249d Zollansatz Tabak_old
  
Description:
Wenn die Tarifnummer = 2402.1000, 2402.2010, 2402.2020, 2402.9000,  2403.1100, 2403.1900, 2403.9910 oder 2403.9990 und der Statistische Schlüssel = 911 ist oder die Tarifnummer = 3824.9098 und der Statistische Schlüssel = 912 ist, dann muss der Zollansatz Fr. 0.00 sein.
Status:
deployable
Locale:
en_US
 
definitions
   set 'POSITION' to a position ;
if
   ( the rate of POSITION isNull
   or ZERO is not the rate of POSITION )
   and ( ( 911 is the statisticalCode of POSITION 
   and the commodityCode of POSITION is one of { "2402.1000" , "2402.2010" , "2402.2020" , "2402.9000" , "2403.1100" , "2403.1900" , "2403.9910" , "2403.9990" } )
   or ( 912 is the statisticalCode of POSITION 
   and "3824.9098" is the commodityCode of POSITION ) )
then
   'the result' .setPositionError( the positions nr of POSITION