Definition: [
    "autonomous agent",
    {
        "init": "{\r
        $nom_AA = 'Accions';\r
\r
        //$_Registre = '5WVBJQHTEP54AEYUJGTQKWTXTXZSJQWA';\r
        $_Registre = trigger.data._Registre;  // * només x tests\r
\r
        // $_Portal = $__dada( '_Portal' );\r
        $_Portal = trigger.address;  // * només x tests\r
        if ( $_Portal != trigger.address ) bounce( 'Portal no reconegut' );\r
\r
       // Arguments, abreviacions, constants...\r
        $args = trigger.data;\r
        $adr__ = trigger.initial_address;\r
        $id_unitat = trigger.output[[ asset != base ]].asset;\r
        $qt = trigger.output[[ asset = $id_unitat ]];\r
        $ACC = $args.accio otherwise '';\r
        $ref = $args.ref;\r
        $nom = $args.nom;\r
        $volum_escala = $args.volum_escala;\r
        $interficie = $args.interficie;\r
        $promotora = $args.promotora;\r
        $nou_ordinal_accio = $args.nou_ordinal_accio;\r
        $cicle_actual = $args.cicle_actual;\r
        $escala_actual = $args.escala_actual;\r
        $interval_escala = $args.interval_escala;\r
        $nova_escala = $args.nova_escala;\r
        $_FOP = $args._FOP;\r
        $id_estels = $args.Estels;\r
        $data_nova_escala = $args.data_nova_escala;\r
        $dades = $args.dades otherwise {};\r
        $args.sentit = 'entrada';\r
        $provisio_registre = $args.provisio_registre;\r
        $provisio = $id_unitat == 'none';\r
        $geto = $args.geto;\r
        $estat_geto = $args.estat_geto;\r
        $_FOP_accio = $args._FOP_accio;\r
        $acc = to_lower( $ACC );\r
        $ordinal_accio = $acc || '_' || $geto || '_' || $nou_ordinal_accio;\r
        $ref_ordinal_accio = 'ordinal_' || $acc || '_' || $geto;\r
        $ref_accio = $acc || '_' || $geto || '_' || $adr__;\r
        $ref_data_accio = $ordinal_accio || '_data';\r
        $ref_cicle_accio = $ordinal_accio || '_cicle';\r
        $ref_qt_accio = $ordinal_accio || '_qt';\r
\r
\r
       // Funció per obtenir una dada del registre\r
        $__dada = $refval =>\r
            data_feed[[ oracles = $_Registre, feed_name = $refval, ifnone = false ]];\r
\r
       // Funcions auxiliars\r
        // Obté valor argument especificat o bota el procés\r
        $__arg = $arg =>\r
            $args[ $arg ] otherwise\r
            bounce( "Cal proporcionar el valor de: " || $arg );\r
\r
        // Obté valor definidor del getó utilitzat\r
        $__definidor = $refdef => {\r
            $geto == 'Estels' ?\r
            $__dada( $refdef ) :\r
            $__dada( $geto || '_' || to_lower( $refdef ) )\r
        };\r
\r
        // Comprova si adreça activada per operar amb getó especificat\r
        $__activada = ( $refgeto, $adre ) =>\r
            !! $__dada( 'activacio_' || $refgeto || '_' || $adre ) ?\r
            true :\r
            bounce( 'Adreça no activada per a ' || $refgeto );\r
\r
        // Comprova si qt proporcionada cobreix import especificat\r
        $__qtSuficient = $refimport, $q => {\r
            $import_requerit = $__definidor( $refimport );\r
            $import_requerit > $q ?\r
            bounce( "L'import requerit és de " || $import_requerit )\r
            : true\r
        };\r
\r
        // Comprova si adreça consta com a subscrita\r
        $__subscrita = $adr =>\r
            !! $__dada( 'subscripcio_' || $geto || '_' || $adr ) ?\r
            true :\r
            bounce( "Adreça no subscrita" );\r
\r
        // Consulta si acció possible\r
        $__accPossible = $ac => {\r
            $geto == 'Estels' ?\r
            true :\r
            $__dada( $geto || '_' || to_lower( $ac ) || 'ns_restringides' ) == 1\r
        };\r
\r
\r
        // Consulta si acció restringida\r
        $__accRestringida = $ac => {\r
            $geto == 'Estels' ?\r
            false :\r
            $__dada( $geto || '_' || to_lower( $ac ) || 'ns_restringides' ) == 1\r
        };\r
\r
        // Si acció restringida per al getó, comprova si adreça capacitada\r
        $__capacitada = ( $ac, $ad ) => {\r
            $capacitacio = $__dada( $geto || '_' || $ac || '_' || $ad );\r
            $__accRestringida( $ac ) AND ! $capacitacio ?\r
            bounce( 'Acció restringida i adreça no capacitada' ) :\r
            true\r
        };\r
\r
        // Nou total a registrar\r
        $__nou_total = ( $ref_tot, $increment ) => {\r
            $nou_total = $__dada( 'total_' || $ref_tot ) otherwise 0;\r
            $dades[ 'total_' || $ref_tot ] = $nou_total + $increment;\r
        };\r
\r
        // Incrementa sumatoris d'entrades compensables\r
        $__increment_sumatoris_compensables = $increment => {\r
            $__nou_total( 'FOP_' || $geto || '_via_' || $interficie, $increment );\r
            $__nou_total( 'FOP_' || $geto || '_per_' || $promotora, $increment );\r
        };\r
\r
       // ...\r
       \r
        $registre = {};\r
        $dades[ 'escala_actual_' || $geto ] = $nova_escala otherwise $escala_actual;\r
        $registre.dades = $dades;\r
    }",
        "messages": {
            "cases": [
                {
                    "if": "{ $ACC == 'Activacio' AND ! $provisio }",
                    "init": "{\r
                    if ( !! $__dada( $ref_accio ) )\r
                        bounce( 'Aquesta adreça ja consta com a activada' );\r
\r
                    $condicions =\r
                        $__qtSuficient( 'Import_Activacio', $qt )\r
                        AND $__capacitada( 'Activacio', $adr__ );\r
\r
                    $dades[ $ref_accio ] = $ordinal_accio;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_cicle_accio ] = $cicle_actual;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $dades[ $ref_qt_accio ] = $qt;\r
                    $dades[ $ordinal_accio || '_nom' ] = $nom;\r
                    $dades[ $ordinal_accio || '_escala' ] = $escala_actual;\r
                    $dades[ $ordinal_accio || '_interval' ] = $interval_escala;\r
                    $__nou_total( 'activacions_' || $geto, $qt );\r
                    $__increment_sumatoris_compensables( $qt );\r
                    $dades[ 'volum_escala_' || $geto ] = $volum_escala + $qt;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            response[ 'Nom' ] = $nom;\r
                            response[ 'Adreça' ] = $adr__;\r
                            response[ 'Getó' ] = $geto;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Subscripcio' AND ! $provisio  }",
                    "init": "{\r
                    $ordinal_renovacio_actual =\r
                        $__dada( 'ordinal_renovacio_' || $geto ) otherwise 0;\r
                    $nou_ordinal_renovacio = $ordinal_renovacio_actual + 1;\r
                    $ord_renovacio = 'renovacio_' || $nou_ordinal_renovacio;\r
                    $ref_renovacio = 'renovacio_' || $geto || '_' || $adr__;\r
\r
                    if ( !! $__dada( $ref_accio ) )\r
                        bounce( 'Aquesta adreça ja consta com a subscrita' );\r
\r
                    $condicions =\r
                        $__qtSuficient( 'Import_Subscripcio', $qt )\r
                        AND $__capacitada( 'Subscripcio', $adr__ );\r
                        //AND $__arg( 'nom' )\r
                        //AND $__arg( 'aportacio' );\r
\r
                    $dades[ $ref_accio ] = $ordinal_accio;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_cicle_accio ] = $cicle_actual;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $dades[ $ordinal_accio || '_nom' ] = $nom;\r
                    $dades[ $ordinal_accio || '_aportacio' ] = $args.aportacio;\r
                    $dades[ $ref_renovacio ] = $ord_renovacio;\r
                    $dades[ $ord_renovacio || '_data' ] = timestamp;\r
                    $dades[ $ord_renovacio || '_cicle' ] = $cicle_actual;\r
                    $dades[ 'ordinal_renovacio_' || $geto ] = $nou_ordinal_renovacio;\r
                    $__nou_total( 'subscripcions_' || $geto, $qt );\r
                    $__increment_sumatoris_compensables( $qt );\r
                    $dades[ 'volum_escala_' || $geto ] = $volum_escala + $qt;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            response[ 'Nom' ] = $nom;\r
                            response[ 'Adreça' ] = $adr__;\r
                            response[ 'Getó' ] = $geto;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Renovacio' AND ! $provisio }",
                    "init": "{\r
                    $cicle_renovat =\r
                        $__dada( $ref_cicle_accio ) otherwise 1;\r
\r
                    $condicions =\r
                        $__subscrita( $adr__ )\r
                        AND $__qtSuficient( 'Import_Renovacio', $qt )\r
                        AND $__capacitada( 'Subscripcio', $adr__ );\r
\r
                    if ( $cicle_actual == $cicle_renovat )\r
                        bounce( 'El cicle actual ja consta com a renovat' );\r
\r
                    $dades[ $ref_accio ] = $ordinal_accio;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_cicle_accio ] = $cicle_actual;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( 'renovacions_' || $geto, $qt );\r
                    $__increment_sumatoris_compensables( $qt );\r
                    $dades[ 'volum_escala_' || $geto ] = $volum_escala + $qt;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            response[ 'Cicle renovat' ] = $cicle_actual;\r
                            response[ 'Getó' ] = $geto;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Diposit' AND ! $provisio }",
                    "init": "{\r
                    $condicions =\r
                        $__subscrita( $adr__ )\r
                        AND $__capacitada( 'Conversio', $adr__ )\r
                        AND $__capacitada( 'Subscripcio', $adr__ );\r
\r
                    $diposit_minim = $__definidor( 'Diposit_Minim' );\r
                    if ( $qt < $diposit_minim )\r
                        bounce( 'El dipòsit mínim és de ' || $diposit_minim );\r
\r
                    $ord_renovacio = $__dada( 'renovacio_' || $geto || '_' || $adr__ );\r
                    $cicle_renovat = $__dada( $ord_renovacio || '_cicle' );\r
\r
                    if ( $cicle_renovat < $cicle_actual )\r
                        bounce( 'Subscripció no renovada. Darrer cicle renovat: ' ||\r
                        $cicle_renovat || ' Cicle actual: ' || $cicle_actual );\r
\r
                    $taxa_conversio = $__definidor( 'Taxa_Conversio' );\r
                    $cicles_diposit = $__definidor( 'Cicles_Diposit' );\r
                    $factor_conversio = $__definidor( 'factor_conversio' ) otherwise 1;\r
                    $cicle_conversio = $cicle_actual + $cicles_diposit;\r
                    $taxa = round( $qt * $factor_conversio * $taxa_conversio / 100, 0 );\r
                    $qt_conversio = $qt - $taxa;\r
                    $dades[ $ref_accio ] = $ordinal_accio;\r
                    $dades[ $ref_qt_accio ] = $qt;\r
                    $dades[ $ordinal_accio || '_dipositant' ] = $adr__;\r
                    $dades[ $ref_cicle_accio ] = $cicle_actual;\r
                    $dades[ $ordinal_accio || '_geto_diposit' ] = $geto;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ordinal_accio || '_taxa' ] = $taxa_conversio;\r
                    $dades[ $ordinal_accio || '_qt_conversio' ] = $qt_conversio;\r
                    $dades[ $ordinal_accio || '_cicle_conversio' ] = $cicle_conversio;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( 'diposits_' || $geto, $qt );\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            response[ $ordinal_accio ] = $ref_accio;\r
                            response[ 'Qt dipòsit' ] = $qt;\r
                            response[ 'Qt conversió' ] = $qt_conversio;\r
                            response[ 'Cicle conversió' ] = $cicle_conversio;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Contribucio' AND ! $provisio }",
                    "init": "{\r
                    $contribucions_possibles =\r
                        $__accPossible ( 'Contribucio' ) otherwise \r
                        bounce( 'Acció no permesa amb aquest geto' );\r
\r
                    $dades[ $ref_accio ] = $ordinal_accio;\r
                    $dades[ $ref_qt_accio ] = $qt;\r
                    $dades[ $ordinal_accio || '_geto' ] = $geto;\r
                    $dades[ $ordinal_accio || '_contribuidora' ] = $adr__;\r
                    $dades[ $ref_cicle_accio ] = $cicle_actual;\r
                    $dades[ $ordinal_accio || '_escala' ] = $escala_actual;\r
                    $dades[ $ordinal_accio || '_interval' ] = $interval_escala;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( 'contribucions_' || $geto , $qt );\r
                    $__increment_sumatoris_compensables( $qt );\r
                    $dades[ 'volum_escala_' || $geto ] = $volum_escala + $qt;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            response[ $ordinal_accio ] = $ref_accio;\r
                            response[ 'Contribuïdora' ] = $adr__;\r
                            response[ 'Quantitat' ] = $qt;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Transfer' AND ! $provisio }",
                    "init": "{\r
                    $receptora = $__arg( 'receptora' );\r
                    $condicions =\r
                        $__activada( 'Estels', $receptora )\r
                        AND $__activada( $geto, $receptora )\r
                        AND $__capacitada( 'Recepcio', $receptora );\r
\r
                    $ref_subscripcio = 'subscripcio_' || $geto || '_' || $receptora;\r
                    $ord_subscripcio = $__dada( $ref_subscripcio );\r
                    $ref_renovacio = 'renovacio_' || $geto || '_' || $receptora;\r
                    $ord_renovacio = $__dada( $ref_renovacio );\r
                    $cicle_renovacio = $__dada( $ord_renovacio || '_cicle' ) otherwise 0;\r
                    $receptora_renovada = $cicle_renovacio == $cicle_actual;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( 'transfers_' || $geto, $qt );\r
                    $args.qt_transfer = $qt;\r
\r
                    if ( $ord_subscripcio AND $receptora_renovada ) {\r
                        $percent_aportacio = $__dada( $ord_subscripcio || '_aportacio' );\r
                        $qt_aportacio = floor( $qt * $percent_aportacio / 100 );\r
                        $args.qt_transfer = $qt - $qt_aportacio;\r
                        $args.emissora = $receptora;\r
                        $__nou_total( 'aportacions_' || $geto, $qt_aportacio );\r
                        $__nou_total( 'aportacions_' || $geto || '_' || $receptora, $qt_aportacio );\r
                        $__increment_sumatoris_compensables( $qt_aportacio );\r
                        $dades[ 'volum_escala_' || $geto ] = $volum_escala + $qt_aportacio;\r
                    }\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "if": "{ !! $qt_aportacio }",
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt_aportacio }"
                                    },
                                    {
                                        "address": "{ $receptora }",
                                        "amount": "{ $args.qt_transfer }"
                                    }
                                ]
                            }
                        },
                        {
                            "if": "{ ! $qt_aportacio }",
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $receptora }",
                                        "amount": "{ $args.qt_transfer }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "state",
                            "state": "{\r
                            if ( !! $qt_aportacio )\r
                                response[ 'Receptora aporta en '|| $geto ] = $qt_aportacio;\r
                        }"
                        }
                    ]
                },
                {
                    "if": "{ $ACC == 'Conversio' AND ! $provisio }",
                    "init": "{\r
                    $qt_dipositada = $__dada( $ref || '_qt' );\r
\r
                    if ( ! $qt_dipositada )\r
                        bounce( 'Dipòsit desconegut' );\r
\r
                    $qt_conversio = $__dada( $ref || '_qt_conversio' );\r
                    $geto_diposit = $__dada( $ref || '_geto_diposit' );\r
                    $cicle_conversio = $__dada( $ref || '_cicle_conversio' );\r
                    $ord_renovacio = $__dada( 'renovacio_' || $geto_diposit || '_' || $adr__ );\r
                    $cicle_renovat = $__dada( $ord_renovacio || '_cicle' );\r
                    $id_unitat_conversio = $geto_diposit == 'Estels' ? 'base' : $id_estels;\r
                    $unitat_conversio = $geto_diposit == 'Estels' ? 'Bytes' : 'Estels';\r
                    $ref_conversio = 'conversio_' || $ref;\r
\r
                    if ( $adr__ != $__dada( $ref || '_dipositant' ))\r
                        bounce( "L'adreça receptora ha de ser la dipositant" );\r
\r
                    if ( !! $__dada( $ref_conversio ))\r
                        bounce( 'Aquest dipòsit ja ha estat convertit' );\r
\r
                    if ( $cicle_conversio > $cicle_actual )\r
                        bounce( "Encara no és l'hora" );\r
\r
                    if ( $cicle_renovat < $cicle_actual )\r
                        bounce( "No renovada en per al cicle actual" );\r
\r
                    $dades[ $ref_conversio ] = $ordinal_accio;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_qt_accio ] = $qt_conversio;\r
                    $dades[ $ordinal_accio || '_unitat' ] = $unitat_conversio;\r
                    $dades[ $ordinal_accio || '_rebedora' ] = $adr__;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( 'conversions_' || $geto_diposit, $qt_dipositada );\r
                    $__nou_total( 'taxes_' || $geto_diposit, ( $qt_dipositada - $qt_conversio ));\r
\r
                    $args.qt = $qt_conversio;\r
                    $args.rebedora = $adr__;\r
                    $args.sentit = 'sortida';\r
                    $args.id_unitat_sortida = $id_unitat_conversio;\r
                    $args.unitat_sortida = $unitat_conversio;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        }
                    ]
                },
                {
                    "if": "{ ( $ACC == 'Retribucio' OR $ACC == 'Bonificacio' ) AND ! $provisio }",
                    "init": "{\r
\r
                    if ( $ACC == 'Bonificacio' ) {\r
                        $bonificacio_possible =\r
                            $__accPossible ( 'Bonificacio' ) otherwise \r
                            bounce( 'Acció de bonificació no permesa en aquest geto' );\r
\r
                        $ord_activac = $__dada( 'activacio_' || $geto || '_' || $adr__ )\r
                            otherwise bounce( 'Activació inexistent' );\r
                        $import = $__dada( $ord_activac || '_qt' );\r
                        $escala = $__dada( $ord_activac || '_escala' );\r
                        $interval = $__dada( $ord_activac || '_interval' );\r
                        $ref_acc =\r
                            'bonificacio_' || $escala_actual || '_' || $geto || '_' || $adr__;\r
                    }\r
\r
                    if ( $ACC == 'Retribucio' ) {\r
                        $import = $__dada( $ref || '_qt' ) \r
                            otherwise bounce( 'Contribució desconeguda' );\r
                        \r
                        if ( ! $__accPossible ( 'Bonificacio' ) AND ! $import )\r
                            bounce( 'Acció de contribució no permesa en aquest geto' );\r
\r
                        $geto_contribucio = $__dada( $ref || '_geto' );\r
                        $escala = $__dada( $ref || '_escala' );\r
                        $interval = $__dada( $ref || '_interval' );\r
\r
                        if ( $geto_contribucio != $geto )\r
                            bounce( "El getó utilitzat i el de la contribució han de ser el mateix" );\r
\r
                        if ( $adr__ != $__dada( $ref || '_contribuidora' ))\r
                            bounce( "Només l'adreça contribuïdora pot rebre la retribució" );\r
\r
                        $ref_acc = 'retribucio_' || $ref || '_escala_' || $escala_actual;\r
                        $dades[ $ordinal_accio || '_rebedora' ] = $adr__;\r
                    }\r
\r
                    // La retribució hi és pendent\r
                    if ( !! $__dada( $ref_acc ))\r
                        bounce( "Ja ha estat retribuïda per a l'escala actual" );\r
\r
                    // Cal que s'hagi produït un salt d'escala\r
                    if ( $escala_actual == $escala )\r
                        bounce( "Cal que es produeixi un salt d'escala" );\r
\r
                    /* Comentat temporalment per a facilitar els tests !!\r
\r
                    // Cal que hagi passat igual o més temps entre la data del salt d'escala i la de la\r
                    //retribució que entre la data del salt d'escala de la contribucio i la data d'aquesta\r
                    \r
                    $diferencia_intervals = $interval_escala - $interval;\r
                    if ( $diferencia_intervals < 0 )\r
                        bounce( "Encara no és l'hora" );\r
                    */\r
\r
                    // Determina la qt de la retribució\r
                    $qt_acc = $import * ( $escala_actual - $escala );\r
\r
                    //...\r
                    $dades[ $ref_acc ] = $ordinal_accio;\r
                    $dades[ $ref_data_accio ] = timestamp;\r
                    $dades[ $ref_qt_accio ] = $qt_acc;\r
                    $dades[ $ordinal_accio || '_geto' ] = $geto;\r
                    $dades[ $ref_ordinal_accio ] = $nou_ordinal_accio;\r
                    $__nou_total( $acc || 'ns_' || $geto, $qt_acc );\r
\r
                    $args.qt = $qt_acc;\r
                    $args.rebedora = $adr__;\r
                    $args.sentit = 'sortida';\r
                    $args.id_unitat_sortida = $id_unitat;\r
                    $args.unitat_sortida = $geto;\r
\r
                    $registre.dades = $dades;\r
                }",
                    "messages": [
                        {
                            "app": "data",
                            "payload": "{ $registre || $args }"
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "base",
                                "outputs": [
                                    {
                                        "address": "{ $_Registre }",
                                        "amount": "{ $provisio_registre }"
                                    }
                                ]
                            }
                        },
                        {
                            "app": "payment",
                            "payload": {
                                "asset": "{ $id_unitat }",
                                "outputs": [
                                    {
                                        "address": "{ $_FOP_accio }",
                                        "amount": "{ $qt }"
                                    }
                                ]
                            }
                        }
                    ]
                }
            ]
        }
    }
]