KENNIS IN VERBINDING / ANALYSE 03.10.2026
TRACEERBAARHEID

evidence/functions.json

Feitelijke analyse op 3 oktober 2026. Codebevindingen zijn geen garantie voor foutloos of daadwerkelijk gebruikt runtimegedrag.

← Alle bronnen
[
  {
    "file": "XLS/LMF.pm",
    "function": "true",
    "line": 16,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::keana_webhook"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "new",
    "line": 18,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request",
      "XLS/LMF.pm::_route_plan_importer",
      "XLS/LMF.pm::postcode",
      "XLS/LMF.pm::stops",
      "XLS/LMF.pm::new_supplier_delivery",
      "XLS/LMF.pm::new_supplier_deliveries",
      "XLS/LMF.pm::next_logistics_delivery",
      "XLS/LMF.pm::logistics_pickup",
      "XLS/LMF.pm::logistics_delivery",
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::customer_delivery",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries",
      "XLS/LMF.pm::keana_webhook",
      "XLS/LMF.pm::klant",
      "XLS/LMF.pm::leverancier"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "handle_request",
    "line": 41,
    "params": [],
    "calls": [
      "_dash_dispatch",
      "_dash_request",
      "accept_new_delivery",
      "assignment",
      "b2c_hub_order",
      "b2c_hub_orders",
      "check_token",
      "confirm_delivery",
      "customer_dashboard",
      "customer_deliveries",
      "customer_delivery",
      "download_orders",
      "hub_customer_products",
      "hub_customers",
      "hub_dashboard",
      "hub_incoming",
      "hub_incoming_deliveries",
      "hub_orders",
      "hub_outgoing",
      "hub_outgoing_deliveries",
      "hub_routes",
      "hub_supplier_products",
      "hub_suppliers",
      "hub_vehicles",
      "keana_webhook",
      "location_comment",
      "log",
      "log_report",
      "log_report_hub",
      "logistics_dashboard",
      "logistics_deliveries",
      "logistics_delivery",
      "logistics_pickup",
      "new",
      "new_supplier_deliveries",
      "new_supplier_delivery",
      "next_logistics_delivery",
      "orders",
      "postcode",
      "products",
      "return_packaging",
      "role",
      "route_plan",
      "stop",
      "stops",
      "supplier_dashboard",
      "supplier_deliveries",
      "update_supplier_delivery",
      "upload_assortment",
      "upload_invoices",
      "upload_package_info"
    ],
    "modules": [
      [
        "XLS::LMF::EmballageControl",
        "new"
      ]
    ],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF.pm",
    "function": "route_plan",
    "line": 224,
    "params": [],
    "calls": [
      "_route_plan_post_method",
      "_route_plan_update_route_locations"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_importer",
    "line": 239,
    "params": [],
    "calls": [
      "new"
    ],
    "modules": [
      [
        "XLS::LMF::RoutePlanImporter",
        "new"
      ]
    ],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_update_route_locations",
    "line": 243,
    "params": [],
    "calls": [
      "_lmf_error",
      "_lmf_positive_int",
      "_lmf_truthy",
      "_route_plan_begin_transaction",
      "_route_plan_commit_transaction",
      "_route_plan_request_payload",
      "_route_plan_rollback_transaction",
      "_route_plan_route_location",
      "_route_plan_route_location_payload",
      "stop"
    ],
    "modules": [],
    "tables": [
      "route_lokatie"
    ],
    "sql": [
      "UPDATE route_lokatie SET nummer=? WHERE id=? AND (nummer IS DISTINCT FROM ?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "route_lokatie"
    ],
    "operations": {
      "route_lokatie": [
        "UPDATE"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::route_plan"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_request_payload",
    "line": 319,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($params) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_route_location_payload",
    "line": 328,
    "params": [],
    "calls": [
      "_lmf_error",
      "_lmf_positive_int",
      "stop"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($payload) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_route_location",
    "line": 364,
    "params": [],
    "calls": [
      "_lmf_error"
    ],
    "modules": [],
    "tables": [
      "route_lokatie"
    ],
    "sql": [
      "SELECT id, nummer FROM route_lokatie WHERE lokatie=?"
    ],
    "signature": [
      "my ($dbh, $location_id) = @_"
    ],
    "writes": [],
    "operations": {
      "route_lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_begin_transaction",
    "line": 380,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($dbh) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_commit_transaction",
    "line": 391,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($dbh, $owns_transaction) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": true,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_rollback_transaction",
    "line": 397,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($dbh, $owns_transaction) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_route_plan_post_method",
    "line": 403,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($method) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::route_plan",
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_request",
    "line": 411,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($request) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_dispatch",
    "line": 421,
    "params": [],
    "calls": [
      "_dash_has_scope_parameter",
      "_dash_marketplace_scope",
      "_lmf_error",
      "_route_plan_post_method",
      "dash_customers",
      "dash_orders",
      "dash_route_customers",
      "dash_suppliers"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_has_scope_parameter",
    "line": 446,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($params) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_marketplace_scope",
    "line": 463,
    "params": [],
    "calls": [
      "_dash_supplier_marketplaces",
      "_lmf_error",
      "_lmf_positive_int",
      "_lmf_truthy",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "klant"
    ],
    "sql": [
      "SELECT klant.marktplaats FROM klant WHERE klant.id=? AND klant.marktplaats IS NOT NULL"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_supplier_marketplaces",
    "line": 499,
    "params": [],
    "calls": [
      "_lmf_positive_int",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_marktplaats"
    ],
    "sql": [
      "SELECT DISTINCT marktplaats FROM leverancier_marktplaats WHERE leverancier=? AND marktplaats IS NOT NULL ORDER BY marktplaats"
    ],
    "signature": [
      "my ( $dbh, $supplier_id ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_marktplaats": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_marketplace_scope"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_lmf_error",
    "line": 514,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($code, $message, $data) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations",
      "XLS/LMF.pm::_route_plan_route_location_payload",
      "XLS/LMF.pm::_route_plan_route_location",
      "XLS/LMF.pm::_dash_dispatch",
      "XLS/LMF.pm::_dash_marketplace_scope",
      "XLS/LMF.pm::dash_customers",
      "XLS/LMF.pm::dash_route_customers",
      "XLS/LMF.pm::dash_suppliers",
      "XLS/LMF.pm::dash_orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "check_token",
    "line": 521,
    "params": [
      "Authorization",
      "token"
    ],
    "calls": [
      "_extract_uuid_token"
    ],
    "modules": [],
    "tables": [
      "lmf_user"
    ],
    "sql": [
      "SELECT id, actief FROM lmf_user WHERE token=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_user": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_extract_uuid_token",
    "line": 558,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($token) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::check_token",
      "XLSLMFHandler.pm::authorization",
      "XLSLMFHandler.pm::credentials"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "postcode",
    "line": 572,
    "params": [],
    "calls": [
      "new"
    ],
    "modules": [
      [
        "XLS::Postcode",
        "new"
      ]
    ],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_customer_products",
    "line": 636,
    "params": [
      "customer_id",
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ]
    ],
    "tables": [
      "leverancier",
      "lokatie",
      "order_regel",
      "product",
      "vers_order"
    ],
    "sql": [
      "SELECT leverancier.id AS supplier_id, leverancier.naam AS supplier_name, product.id, product.code, product.naam AS name, product.omschrijving_verpakking AS package_description, vers_order.afleverdatum AS delivery_date, sum(order_regel.aantal) AS number FROM lokatie, leverancier, product, order_regel, vers_order WHERE leverancier.id = product.leverancier AND product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.lokatie = lokatie.id AND lokatie.id = ? AND vers_order.afleverdatum BETWEEN ? AND ? GROUP BY leverancier.id, leverancier.naam, product.id, product.code, product.naam, product.omschrijving_verpakking, vers_order.afleverdatum ORDER BY product.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "lokatie": [],
      "order_regel": [],
      "product": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_supplier_products",
    "line": 678,
    "params": [
      "end_date",
      "start_date",
      "supplier_id"
    ],
    "calls": [],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ]
    ],
    "tables": [
      "order_regel",
      "product",
      "vers_order"
    ],
    "sql": [
      "SELECT product.id, product.code, product.naam AS name, product.omschrijving_verpakking AS package_description, vers_order.afleverdatum AS delivery_date, sum(order_regel.aantal) AS number FROM product, order_regel, vers_order WHERE product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.leverancier = ? AND vers_order.afleverdatum BETWEEN ? AND ? GROUP BY product.id, product.code, product.naam, product.omschrijving_verpakking, vers_order.afleverdatum ORDER BY product.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_customers",
    "line": 714,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "lokatie",
      "vers_order"
    ],
    "sql": [
      "SELECT DISTINCT lokatie.id, lokatie.naam, lokatie.lat_lng FROM lokatie, vers_order WHERE lokatie.id = vers_order.lokatie AND vers_order.hub = ? AND vers_order.afleverdatum::date BETWEEN ? AND ? ORDER BY lokatie.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_suppliers",
    "line": 742,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier",
      "vers_order"
    ],
    "sql": [
      "SELECT DISTINCT leverancier.id, leverancier.naam AS name, leverancier.latitude, leverancier.longitude, leverancier.hub AS can_act_as_hub, leverancier.vervoerder AS can_act_as_carrier FROM leverancier, vers_order WHERE ( leverancier.id = vers_order.leverancier OR leverancier.id = vers_order.hub ) AND vers_order.hub = ? AND vers_order.afleverdatum::date BETWEEN ? AND ? ORDER BY leverancier.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_orders",
    "line": 774,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_location_date_key",
      "_preload_registration_details_by_location_date",
      "_preload_registration_details_by_supplier_date",
      "_registration_totals"
    ],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "JSON_Timestamp"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "lokatie",
      "vers_order"
    ],
    "sql": [
      "SELECT DISTINCT leverancier.id, leverancier.naam, leverancier.latitude, leverancier.longitude, hub.id AS hub_id, hub.naam AS hub_name, hub.latitude AS hub_latitude, hub.longitude AS hub_longitude, lokatie.id AS lokatie_id, lokatie.naam AS lokatie_naam, lokatie.lat_lng, vers_order.id AS order_id, vers_order.order_datum AS order_date, vers_order.bedrag AS order_amount, leverancier_pakbon.lever_datum FROM leverancier AS hub, leverancier, lokatie, leverancier_pakbon, vers_order WHERE vers_order.id = leverancier_pakbon.vers_order AND hub.id = leverancier_pakbon.hub AND leverancier.id = leverancier_pakbon.leverancier AND lokatie.id = leverancier_pakbon.lokatie AND leverancier_pakbon.hub = ? AND leverancier_pakbon.lever_datum::date BETWEEN ? AND ? ORDER BY leverancier.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [],
      "lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "dash_customers",
    "line": 867,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_dash_in_clause",
      "_lmf_error"
    ],
    "modules": [],
    "tables": [
      "klant",
      "lokatie",
      "vers_order"
    ],
    "sql": [
      "SELECT DISTINCT lokatie.id, lokatie.naam, lokatie.lat_lng FROM vers_order JOIN lokatie ON lokatie.id = vers_order.lokatie JOIN klant ON klant.id = lokatie.klant WHERE $marketplace_sql AND (vers_order.marktplaats IS NULL OR vers_order.marktplaats = klant.marktplaats) AND vers_order.afleverdatum::date BETWEEN ? AND ? ORDER BY lokatie.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "dash_route_customers",
    "line": 901,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_dash_in_clause",
      "_dash_route_number_sort",
      "_lmf_error",
      "_lmf_positive_int"
    ],
    "modules": [],
    "tables": [
      "klant",
      "lokatie",
      "marktplaats",
      "route",
      "route_lokatie",
      "vers_order"
    ],
    "sql": [
      "WITH scoped_customers AS ( SELECT DISTINCT lokatie.id, lokatie.naam, lokatie.lat_lng, klant.marktplaats FROM vers_order JOIN lokatie ON lokatie.id = vers_order.lokatie JOIN klant ON klant.id = lokatie.klant WHERE $marketplace_sql AND (vers_order.marktplaats IS NULL OR vers_order.marktplaats = klant.marktplaats) AND vers_order.afleverdatum::date BETWEEN ? AND ? ) SELECT scoped_customers.id, scoped_customers.naam, scoped_customers.lat_lng, route.id AS route_id, route.naam AS route_name, route_lokatie.nummer FROM scoped_customers LEFT JOIN marktplaats ON marktplaats.id = scoped_customers.marktplaats LEFT JOIN route_lokatie ON route_lokatie.lokatie = scoped_customers.id LEFT JOIN route ON route.id = route_lokatie.route AND route.leverancier = marktplaats.leverancier ORDER BY scoped_customers.naam, scoped_customers.id, route_lokatie.nummer, route.naam, route.id"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "lokatie": [],
      "marktplaats": [],
      "route": [],
      "route_lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "dash_suppliers",
    "line": 1018,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_dash_in_clause",
      "_lmf_error"
    ],
    "modules": [],
    "tables": [
      "klant",
      "leverancier",
      "lokatie",
      "vers_order"
    ],
    "sql": [
      "SELECT DISTINCT leverancier.id, leverancier.naam AS name, leverancier.latitude, leverancier.longitude, leverancier.hub AS can_act_as_hub, leverancier.vervoerder AS can_act_as_carrier FROM vers_order JOIN lokatie ON lokatie.id = vers_order.lokatie JOIN klant ON klant.id = lokatie.klant JOIN leverancier ON ( leverancier.id = vers_order.leverancier OR leverancier.id = vers_order.hub ) WHERE $marketplace_sql AND (vers_order.marktplaats IS NULL OR vers_order.marktplaats = klant.marktplaats) AND vers_order.afleverdatum::date BETWEEN ? AND ? ORDER BY leverancier.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier": [],
      "lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "dash_orders",
    "line": 1058,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_dash_in_clause",
      "_dash_registration_key",
      "_lmf_error",
      "_preload_dash_registration_details_by_location_date",
      "_preload_dash_registration_details_by_supplier_date",
      "_registration_totals"
    ],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "JSON_Timestamp"
      ]
    ],
    "tables": [
      "klant",
      "leverancier",
      "leverancier_pakbon",
      "lokatie",
      "vers_order"
    ],
    "sql": [
      "WITH scoped_pakbon AS ( SELECT DISTINCT leverancier_pakbon.id AS pakbon_id, leverancier_pakbon.hub, leverancier_pakbon.leverancier, leverancier_pakbon.lokatie, leverancier_pakbon.lever_datum, vers_order.id AS order_id, vers_order.order_datum AS order_date, vers_order.bedrag AS order_amount FROM leverancier_pakbon JOIN vers_order ON vers_order.id = leverancier_pakbon.vers_order JOIN lokatie ON lokatie.id = leverancier_pakbon.lokatie JOIN klant ON klant.id = lokatie.klant WHERE $marketplace_sql AND (vers_order.marktplaats IS NULL OR vers_order.marktplaats = klant.marktplaats) AND leverancier_pakbon.lever_datum::date BETWEEN ? AND ? ) SELECT DISTINCT leverancier.id, leverancier.naam, leverancier.latitude, leverancier.longitude, hub.id AS hub_id, hub.naam AS hub_name, hub.latitude AS hub_latitude, hub.longitude AS hub_longitude, lokatie.id AS lokatie_id, lokatie.naam AS lokatie_naam, lokatie.lat_lng, scoped_pakbon.order_id, scoped_pakbon.order_date, scoped_pakbon.order_amount, scoped_pakbon.lever_datum FROM scoped_pakbon JOIN leverancier AS hub ON hub.id = scoped_pakbon.hub JOIN leverancier ON leverancier.id = scoped_pakbon.leverancier JOIN lokatie ON lokatie.id = scoped_pakbon.lokatie ORDER BY leverancier.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier": [],
      "leverancier_pakbon": [],
      "lokatie": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_dispatch"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_vehicles",
    "line": 1171,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "voertuig"
    ],
    "sql": [
      "SELECT * FROM voertuig WHERE leverancier=? AND actief=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "voertuig": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_routes",
    "line": 1193,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "lokatie",
      "route",
      "route_lokatie"
    ],
    "sql": [
      "SELECT DISTINCT route.id AS route_id, route.naam AS route_name, route_lokatie.nummer, leverancier_pakbon.lever_datum AS delivery_date, leverancier.id AS supplier_id, lokatie.id AS customer_id FROM route, leverancier_pakbon, route_lokatie LEFT JOIN lokatie ON lokatie.id = route_lokatie.lokatie LEFT JOIN leverancier ON leverancier.id = route_lokatie.leverancier WHERE leverancier_pakbon.hub = ? AND leverancier_pakbon.lever_datum BETWEEN ? AND ? AND route.leverancier = leverancier_pakbon.hub AND route_lokatie.route = route.id ORDER BY route_lokatie.nummer"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [],
      "lokatie": [],
      "route": [],
      "route_lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "b2c_hub_orders",
    "line": 1228,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "b2c_hub_order",
    "line": 1235,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "log_report_hub",
    "line": 1242,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "log_report",
    "line": 1249,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_log"
    ],
    "sql": [
      "SELECT username, bericht AS message, datum AS date FROM lmf_log WHERE leverancier=? AND datum::date BETWEEN ? AND ? ORDER BY id DESC"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_log": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "log",
    "line": 1274,
    "params": [
      "message",
      "username"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_log"
    ],
    "sql": [
      "INSERT INTO lmf_log(leverancier, username, bericht) VALUES(?,?,?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "lmf_log"
    ],
    "operations": {
      "lmf_log": [
        "INSERT INTO"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_dashboard",
    "line": 1285,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "order_regel",
      "product",
      "productgroep",
      "vers_order"
    ],
    "sql": [
      "SELECT afleverdatum AS delivery_date, count(*) AS orders FROM vers_order WHERE afleverdatum BETWEEN ? AND ? AND hub=? GROUP BY afleverdatum ORDER BY afleverdatum",
      "SELECT productgroep.naam AS name, sum(order_regel.aantal) AS number FROM vers_order, order_regel, product, productgroep WHERE productgroep.id = product.productgroep AND product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.afleverdatum BETWEEN ? AND ? AND vers_order.hub = ? GROUP BY productgroep.naam ORDER BY number DESC LIMIT 10"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": [],
      "productgroep": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "supplier_dashboard",
    "line": 1335,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "order_regel",
      "product",
      "productgroep",
      "vers_order"
    ],
    "sql": [
      "SELECT afleverdatum AS delivery_date, count(*) AS orders FROM vers_order WHERE afleverdatum BETWEEN ? AND ? AND leverancier=? GROUP BY afleverdatum ORDER BY afleverdatum",
      "SELECT productgroep.naam AS name, sum(order_regel.aantal) AS number FROM vers_order, order_regel, product, productgroep WHERE productgroep.id = product.productgroep AND product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.afleverdatum BETWEEN ? AND ? AND vers_order.leverancier = ? GROUP BY productgroep.naam ORDER BY number DESC LIMIT 10"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": [],
      "productgroep": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistics_dashboard",
    "line": 1385,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "order_regel",
      "product",
      "productgroep",
      "vers_order"
    ],
    "sql": [
      "SELECT afleverdatum AS delivery_date, count(*) AS orders FROM vers_order WHERE afleverdatum BETWEEN ? AND ? AND transporteur=? GROUP BY afleverdatum ORDER BY afleverdatum",
      "SELECT productgroep.naam AS name, sum(order_regel.aantal) AS number FROM vers_order, order_regel, product, productgroep WHERE productgroep.id = product.productgroep AND product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.afleverdatum BETWEEN ? AND ? AND vers_order.transporteur = ? GROUP BY productgroep.naam ORDER BY number DESC LIMIT 10"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": [],
      "productgroep": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "customer_dashboard",
    "line": 1435,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "lokatie",
      "order_regel",
      "product",
      "productgroep",
      "vers_order"
    ],
    "sql": [
      "SELECT afleverdatum AS delivery_date, count(*) AS orders FROM vers_order WHERE afleverdatum BETWEEN ? AND ? AND lokatie IN( SELECT id FROM lokatie WHERE guid= ?) GROUP BY afleverdatum ORDER BY afleverdatum",
      "SELECT productgroep.naam AS name, sum(order_regel.aantal) AS number FROM vers_order, order_regel, product, productgroep WHERE productgroep.id = product.productgroep AND product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.afleverdatum BETWEEN ? AND ? AND vers_order.lokatie IN ( SELECT id FROM lokatie WHERE guid = ?) GROUP BY productgroep.naam ORDER BY number DESC LIMIT 10"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lokatie": [],
      "order_regel": [],
      "product": [],
      "productgroep": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "orders",
    "line": 1486,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "order_regels"
    ],
    "modules": [],
    "tables": [
      "lokatie",
      "order_status",
      "vers_order"
    ],
    "sql": [
      "SELECT vers_order.id AS order_id, lokatie.id AS location_id, lokatie.naam AS location_name, vers_order.afleverdatum AS delivery_date, order_status.naam AS status FROM vers_order, lokatie, order_status WHERE order_status.id = vers_order.order_status AND lokatie.id = vers_order.lokatie AND vers_order.leverancier = ? AND vers_order.afleverdatum BETWEEN ? AND ? AND (vers_order.app=false OR vers_order.app=true) ORDER BY vers_order.id"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lokatie": [],
      "order_status": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "order_regels",
    "line": 1521,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "order_regel",
      "product"
    ],
    "sql": [
      "SELECT product.code, product.naam AS name, product.omschrijving_verpakking AS package_description, product.stuk_gewicht, order_regel.aantal AS number, order_regel.bestel_gewicht AS weight FROM product, order_regel WHERE product.id=order_regel.product AND order_regel.vers_order=? ORDER BY product.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "products",
    "line": 1547,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "order_regel",
      "product",
      "vers_order"
    ],
    "sql": [
      "SELECT vers_order.afleverdatum AS delivery_date, product.naam AS name, product.omschrijving_verpakking AS package_description, sum(order_regel.aantal) AS number FROM product, order_regel, vers_order WHERE product.id = order_regel.product AND order_regel.vers_order = vers_order.id AND vers_order.leverancier = ? AND vers_order.afleverdatum BETWEEN ? AND ? GROUP BY product.naam, product.omschrijving_verpakking, vers_order.afleverdatum ORDER BY vers_order.afleverdatum, product.naam"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "order_regel": [],
      "product": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "lmf_bezoeker",
    "line": 1582,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_bezoeker",
      "lmf_pagina"
    ],
    "sql": [
      "SELECT * FROM lmf_bezoeker WHERE ip_adres=?",
      "INSERT INTO lmf_bezoeker(ip_adres, plaats, latitude, longitude) VALUES(?,?,?,?)",
      "SELECT * FROM lmf_pagina WHERE ? BETWEEN west AND oost AND ? BETWEEN zuid AND noord",
      "SELECT count(*) FROM lmf_pagina",
      "SELECT * FROM lmf_pagina WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "lmf_bezoeker"
    ],
    "operations": {
      "lmf_bezoeker": [
        "INSERT INTO"
      ],
      "lmf_pagina": []
    },
    "commits": true,
    "callers": []
  },
  {
    "file": "XLS/LMF.pm",
    "function": "assignment",
    "line": 1604,
    "params": [
      "date",
      "debtor",
      "order_number",
      "packages"
    ],
    "calls": [
      "lokatie_hub"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_emballage_registratie",
      "leverancier_pakbon",
      "leverancier_pakbon_footer",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT * FROM lokatie WHERE id IN ( SELECT lokatie FROM lokatie_leverancier WHERE debiteurnummer=? AND leverancier=?)",
      "SELECT * FROM leverancier_pakbon WHERE leverancier=? AND lokatie=? AND lever_datum=?",
      "SELECT * FROM leverancier_emballage_artikel WHERE leverancier=? AND code=?",
      "INSERT INTO leverancier_pakbon(leverancier, lokatie, factuur_nummer, lever_datum, via_hub, hub, lmf_levering) VALUES(?,?,?,?,?,?,?) RETURNING id",
      "INSERT INTO leverancier_pakbon_footer(leverancier_pakbon, totaal_emballage_bedrag) VALUES(?,?)",
      "SELECT levering FROM leverancier_pakbon WHERE id=?",
      "INSERT INTO leverancier_emballage_registratie(leverancier, leverancier_emballage_artikel, datum, hub, inkomend, lmf_user, leverancier_pakbon, levering) VALUES(?,?,?,?,?,?,?,?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_emballage_registratie",
      "leverancier_pakbon",
      "leverancier_pakbon_footer"
    ],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_emballage_registratie": [
        "INSERT INTO"
      ],
      "leverancier_pakbon": [
        "INSERT INTO"
      ],
      "leverancier_pakbon_footer": [
        "INSERT INTO"
      ],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "lokatie_hub",
    "line": 1657,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT * FROM leverancier WHERE id IN(SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "lokatie_leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::assignment"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "download_orders",
    "line": 1666,
    "params": [],
    "calls": [],
    "modules": [
      [
        "XLS::Datum",
        "JSON_Datum"
      ]
    ],
    "tables": [
      "lokatie_leverancier",
      "order_regel",
      "product",
      "vers_order"
    ],
    "sql": [
      "SELECT product.code, product.naam AS name, product.stuk_gewicht AS type, product.bestelgewicht AS product_weight, order_regel.aantal AS number, order_regel.bestel_gewicht AS weight FROM product, order_regel WHERE product.id = order_regel.product AND order_regel.vers_order=?",
      "SELECT * FROM vers_order WHERE leverancier=? AND order_status=? ORDER BY id",
      "SELECT debiteurnummer FROM lokatie_leverancier WHERE lokatie=? AND leverancier=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "lokatie_leverancier": [],
      "order_regel": [],
      "product": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "upload_assortment",
    "line": 1705,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "upload_invoices",
    "line": 1712,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "upload_package_info",
    "line": 1719,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "location_comment",
    "line": 1726,
    "params": [
      "comment",
      "location"
    ],
    "calls": [
      "klant"
    ],
    "modules": [],
    "tables": [
      "lokatie"
    ],
    "sql": [
      "UPDATE lokatie SET bijzonderheden=? WHERE guid=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "lokatie"
    ],
    "operations": {
      "lokatie": [
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_incoming_deliveries",
    "line": 1738,
    "params": [
      "delivery_date",
      "packages",
      "returned_packages",
      "supplier_id"
    ],
    "calls": [
      "_emballage_source_reference"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_registratie"
    ],
    "sql": [
      "INSERT INTO leverancier_emballage_registratie( lmf_user, hub, leverancier_emballage_artikel, kvd, inkomend, datum, leverancier, bevestigd, leverancier_pakbon, levering) VALUES(?,?,?,?,?,?,?,?,?,?) RETURNING id",
      "UPDATE leverancier_emballage_registratie SET inkomend=?, bevestigd=?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?), levering=COALESCE(levering, ?) WHERE leverancier_emballage_artikel=? AND hub=? AND datum=? AND leverancier=?",
      "INSERT INTO leverancier_emballage_registratie( lmf_user, hub, leverancier_emballage_artikel, kvd, uitgaand, datum, leverancier, bevestigd, leverancier_pakbon, levering) VALUES(?,?,?,?,?,?,?,?,?,?) RETURNING id",
      "UPDATE leverancier_emballage_registratie SET uitgaand=?, bevestigd=?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?), levering=COALESCE(levering, ?) WHERE leverancier_emballage_artikel=? AND hub=? AND datum=? AND leverancier=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_emballage_registratie"
    ],
    "operations": {
      "leverancier_emballage_registratie": [
        "INSERT INTO",
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_outgoing_deliveries",
    "line": 1831,
    "params": [
      "delivery_date",
      "location_id",
      "packages",
      "returned_packages"
    ],
    "calls": [
      "_emballage_source_reference"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_registratie"
    ],
    "sql": [
      "INSERT INTO leverancier_emballage_registratie( lmf_user, hub, leverancier_emballage_artikel, kvd, uitgaand, datum, lokatie, bevestigd, leverancier_pakbon, levering) VALUES(?,?,?,?,?,?,?,?,?,?) RETURNING id",
      "INSERT INTO leverancier_emballage_registratie( lmf_user, hub, leverancier_emballage_artikel, kvd, inkomend, datum, lokatie, bevestigd, leverancier_pakbon, levering) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id",
      "UPDATE leverancier_emballage_registratie SET inkomend = ?, bevestigd = ?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?), levering=COALESCE(levering, ?) WHERE leverancier_emballage_artikel = ? AND hub = ? AND datum = ? AND lokatie = ?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_emballage_registratie"
    ],
    "operations": {
      "leverancier_emballage_registratie": [
        "INSERT INTO",
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_emballage_source_reference",
    "line": 1909,
    "params": [
      "delivery_id",
      "leverancier_pakbon",
      "levering"
    ],
    "calls": [
      "_emballage_source_reference_result",
      "_lmf_positive_int"
    ],
    "modules": [],
    "tables": [
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT id, levering, hub, leverancier, lokatie, lever_datum FROM leverancier_pakbon WHERE id=?",
      "SELECT id, levering, hub, leverancier, lokatie, lever_datum FROM leverancier_pakbon WHERE guid=?",
      "SELECT id, levering, hub, leverancier, lokatie, lever_datum FROM leverancier_pakbon WHERE levering=?",
      "SELECT id, levering, hub, leverancier, lokatie, lever_datum FROM leverancier_pakbon WHERE"
    ],
    "signature": [
      "my ( $args, $scope ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_incoming_deliveries",
      "XLS/LMF.pm::hub_outgoing_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_emballage_source_reference_result",
    "line": 1948,
    "params": [],
    "calls": [
      "_emballage_source_in_scope",
      "_lmf_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $row, $scope ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_emballage_source_reference"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_emballage_source_in_scope",
    "line": 1957,
    "params": [],
    "calls": [
      "_lmf_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $row, $scope ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_emballage_source_reference_result"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_incoming",
    "line": 1974,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_location_date_key",
      "_preload_locations_by_supplier_date",
      "_preload_package_catalogs",
      "_preload_registration_details_by_supplier_date"
    ],
    "modules": [],
    "tables": [
      "leverancier",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT leverancier.id AS supplier_id, leverancier.naam AS supplier, leverancier.adres AS address, leverancier.postcode AS zipcode, leverancier.plaats AS city, leverancier.latitude, leverancier.longitude, leverancier_pakbon.lever_datum AS delivery_date FROM leverancier, leverancier_pakbon WHERE leverancier.id = leverancier_pakbon.leverancier AND leverancier_pakbon.hub = ? AND leverancier_pakbon.lever_datum BETWEEN ? AND ? GROUP BY leverancier.id, leverancier.naam,leverancier.adres, leverancier.postcode, leverancier.plaats, leverancier.latitude, leverancier_pakbon.lever_datum ORDER BY leverancier.naam, leverancier_pakbon.lever_datum"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub_outgoing",
    "line": 2055,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_location_date_key",
      "_preload_basic_suppliers_by_location_date",
      "_preload_package_catalogs",
      "_preload_registration_details_by_location_date"
    ],
    "modules": [],
    "tables": [
      "leverancier_pakbon",
      "lokatie"
    ],
    "sql": [
      "SELECT lokatie.id AS location_id, lokatie.naam AS location, lokatie.adres AS address, lokatie.postcode AS zipcode, lokatie.plaats AS city, lokatie.lat_lng, leverancier_pakbon.lever_datum AS delivery_date FROM lokatie, leverancier_pakbon WHERE lokatie.id = leverancier_pakbon.lokatie AND leverancier_pakbon.hub = ? AND leverancier_pakbon.lever_datum BETWEEN ? AND ? GROUP BY lokatie.id, lokatie.naam, leverancier_pakbon.lever_datum ORDER BY lokatie.naam, leverancier_pakbon.lever_datum"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_pakbon": [],
      "lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "stop",
    "line": 2125,
    "params": [
      "stop_id"
    ],
    "calls": [
      "delivery_stop",
      "pickup_stop"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request",
      "XLS/LMF.pm::_route_plan_update_route_locations",
      "XLS/LMF.pm::_route_plan_route_location_payload"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "delivery_stop",
    "line": 2140,
    "params": [
      "packages",
      "returned_packages",
      "stop_id"
    ],
    "calls": [
      "_lmf_positive_int",
      "stops"
    ],
    "modules": [
      [
        "XLS::Datum",
        "vandaag"
      ]
    ],
    "tables": [
      "leverancier_emballage_registratie_stop",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT * FROM leverancier_pakbon WHERE id=?",
      "INSERT INTO leverancier_emballage_registratie_stop( lmf_user, datum, lokatie, leverancier_emballage_artikel, opgehaald, afgeleverd, kvd, stop_id, leverancier_pakbon) VALUES(?,now(),?,?,?,?,?,?,?)",
      "UPDATE leverancier_emballage_registratie_stop SET opgehaald=?, afgeleverd=?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?) WHERE datum::date=? AND lokatie=? AND leverancier_emballage_artikel=? AND kvd=? AND stop_id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_emballage_registratie_stop"
    ],
    "operations": {
      "leverancier_emballage_registratie_stop": [
        "INSERT INTO",
        "UPDATE"
      ],
      "leverancier_pakbon": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::stop"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "pickup_stop",
    "line": 2181,
    "params": [
      "packages",
      "returned_packages",
      "stop_id"
    ],
    "calls": [
      "_lmf_positive_int",
      "next_stop",
      "stops"
    ],
    "modules": [
      [
        "XLS::Datum",
        "vandaag"
      ]
    ],
    "tables": [
      "leverancier_emballage_registratie_stop",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT * FROM leverancier_pakbon WHERE id=?",
      "INSERT INTO leverancier_emballage_registratie_stop( lmf_user, datum, hub, leverancier_emballage_artikel, opgehaald, afgeleverd, kvd, stop_id, leverancier_pakbon) VALUES(?,now(),?,?,?,?,?,?,?)",
      "UPDATE leverancier_emballage_registratie_stop SET opgehaald=?, afgeleverd=?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?) WHERE datum::date=? AND hub=? AND leverancier_emballage_artikel=? AND kvd=? AND stop_id=?",
      "INSERT INTO leverancier_emballage_registratie_stop( lmf_user, datum, leverancier, leverancier_emballage_artikel, opgehaald, afgeleverd, kvd, stop_id, leverancier_pakbon) VALUES(?,now(),?,?,?,?,?,?,?)",
      "UPDATE leverancier_emballage_registratie_stop SET opgehaald=?, afgeleverd=?, leverancier_pakbon=COALESCE(leverancier_pakbon, ?) WHERE datum::date=? AND leverancier=? AND leverancier_emballage_artikel=? AND kvd=? AND stop_id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_emballage_registratie_stop"
    ],
    "operations": {
      "leverancier_emballage_registratie_stop": [
        "INSERT INTO",
        "UPDATE"
      ],
      "leverancier_pakbon": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::stop"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "next_stop",
    "line": 2240,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier",
      "leverancier_emballage_registratie_stop",
      "leverancier_pakbon",
      "lokatie"
    ],
    "sql": [
      "SELECT DISTINCT leverancier_pakbon.id, leverancier_pakbon.levering AS delivery_id, leverancier.id AS supplier_id, leverancier.naam AS supplier_name, leverancier.adres AS supplier_address, leverancier.postcode AS supplier_postcode, leverancier.plaats AS supplier_plaats, leverancier.longitude, leverancier.latitude, lokatie.id AS location_id, lokatie.naam AS location_name, lokatie.adres AS location_adres, lokatie.postcode AS location_postcode, lokatie.aflever_nummer AS location_huisnummer, lokatie.aflever_toevoeging AS location_toevoeging, lokatie.plaats AS location_plaats, lokatie.lat_lng, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.hub FROM leverancier, lokatie, leverancier_pakbon WHERE leverancier_pakbon.transporteur = ? AND leverancier_pakbon.lever_datum BETWEEN ? AND ? AND leverancier.id = leverancier_pakbon.hub AND lokatie.id = leverancier_pakbon.lokatie ORDER BY leverancier_pakbon.lever_datum",
      "SELECT * FROM leverancier_emballage_registratie_stop WHERE datum::date=? AND stop_id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_emballage_registratie_stop": [],
      "leverancier_pakbon": [],
      "lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::pickup_stop"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "stops",
    "line": 2331,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "emballage_artikelen_hub",
      "new",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_emballage_registratie_stop",
      "leverancier_pakbon",
      "lokatie",
      "route_lokatie"
    ],
    "sql": [
      "SELECT DISTINCT leverancier_pakbon.id, leverancier_pakbon.levering AS delivery_id, leverancier.id AS supplier_id, leverancier.naam AS supplier_name, leverancier.adres AS supplier_address, leverancier.postcode AS supplier_postcode, leverancier.plaats AS supplier_plaats, leverancier.longitude, leverancier.latitude, lokatie.id AS location_id, lokatie.naam AS location_name, lokatie.adres AS location_adres, lokatie.postcode AS location_postcode, lokatie.aflever_nummer AS location_huisnummer, lokatie.aflever_toevoeging AS location_toevoeging, lokatie.plaats AS location_plaats, lokatie.lat_lng, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.hub, route_lokatie.route, route_lokatie.nummer FROM leverancier, lokatie, leverancier_pakbon, route_lokatie WHERE leverancier_pakbon.lever_datum BETWEEN ? AND ? AND leverancier.id = leverancier_pakbon.hub AND lokatie.id = leverancier_pakbon.lokatie AND lokatie.id = route_lokatie.lokatie AND route_lokatie.route = ? ORDER BY route_lokatie.nummer",
      "UPDATE leverancier_pakbon SET levering=? WHERE id=?",
      "SELECT * FROM leverancier_emballage_registratie_stop WHERE datum::date=? AND stop_id=?",
      "SELECT * FROM leverancier_emballage_registratie_stop WHERE datum::date=? AND stop_id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier": [],
      "leverancier_emballage_registratie_stop": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "lokatie": [],
      "route_lokatie": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request",
      "XLS/LMF.pm::delivery_stop",
      "XLS/LMF.pm::pickup_stop"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "return_packaging",
    "line": 2477,
    "params": [
      "delivery_id"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT * FROM leverancier_pakbon WHERE levering=? LIMIT 1",
      "SELECT * FROM leverancier WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "accept_new_delivery",
    "line": 2488,
    "params": [
      "delivery_id"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT * FROM leverancier_pakbon WHERE guid=?",
      "UPDATE leverancier_pakbon SET geaccepteerd=now(), status_levering=?, transporteur=? WHERE guid=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier_pakbon": [
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "confirm_delivery",
    "line": 2508,
    "params": [
      "comment",
      "delivery_id",
      "outbound_packages",
      "photo",
      "signature"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_pakbon",
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_levering"
    ],
    "sql": [
      "SELECT * FROM leverancier_pakbon WHERE guid=? AND leverancier=?",
      "SELECT * FROM leverancier_pakbon WHERE guid=?",
      "SELECT * FROM leverancier_pakbon_levering WHERE leverancier_pakbon=? AND lmf_user=?",
      "INSERT INTO leverancier_pakbon_levering(leverancier_pakbon, datum, commentaar, lmf_user) VALUES(?,now(),?,?)",
      "UPDATE leverancier_pakbon_emballage SET geleverd_volgens_leverancier=? WHERE leverancier_emballage_artikel=? AND kvd=? AND leverancier_pakbon=?",
      "INSERT INTO leverancier_pakbon_emballage(leverancier_pakbon, leverancier_emballage_artikel, kvd, geleverd_volgens_leverancier) VALUES(?,?,?,?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_levering"
    ],
    "operations": {
      "leverancier_pakbon": [],
      "leverancier_pakbon_emballage": [
        "INSERT INTO",
        "UPDATE"
      ],
      "leverancier_pakbon_levering": [
        "INSERT INTO"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "new_supplier_delivery",
    "line": 2561,
    "params": [
      "delivery_date",
      "location",
      "packages"
    ],
    "calls": [
      "new"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ]
    ],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon",
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_footer",
      "lokatie"
    ],
    "sql": [
      "SELECT * FROM lokatie WHERE guid=?",
      "SELECT id FROM leverancier_pakbon WHERE leverancier=? AND lokatie=? AND lever_datum=?",
      "SELECT id FROM leverancier_pakbon WHERE leverancier=?",
      "INSERT INTO leverancier_pakbon(leverancier, lokatie, lever_datum, factuur_nummer, guid, lmf_levering) VALUES(?,?,?,?,?,?) RETURNING id",
      "INSERT INTO leverancier_pakbon_footer(leverancier_pakbon, totaal_netto_regel_bedrag, grondslag_bedrag_btw_hoog, grondslag_bedrag_btw_laag, grondslag_bedrag_btw_nul, btw_bedrag_hoog, btw_bedrag_laag, btw_percentage_laag, btw_percentage_hoog, totaal_btw_bedrag, totaal_emballage_bedrag, totaal_factuur_bedrag) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING id",
      "SELECT * FROM leverancier_emballage_artikel WHERE id=?",
      "UPDATE leverancier_pakbon_emballage SET geleverd_volgens_leverancier=? WHERE leverancier_pakbon=? AND leverancier_emballage_artikel=?",
      "INSERT INTO leverancier_pakbon_emballage(leverancier_pakbon, leverancier_emballage_artikel, geleverd_volgens_leverancier, kvd) VALUES(?,?,?,?)",
      "UPDATE leverancier_pakbon_footer SET totaal_emballage_bedrag=? WHERE leverancier_pakbon=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon",
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_footer"
    ],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": [
        "INSERT INTO"
      ],
      "leverancier_pakbon_emballage": [
        "INSERT INTO",
        "UPDATE"
      ],
      "leverancier_pakbon_footer": [
        "INSERT INTO",
        "UPDATE"
      ],
      "lokatie": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "update_supplier_delivery",
    "line": 2601,
    "params": [
      "delivery_id",
      "packages"
    ],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon",
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_footer"
    ],
    "sql": [
      "SELECT id FROM leverancier_pakbon WHERE guid=?",
      "SELECT * FROM leverancier_emballage_artikel WHERE id=?",
      "UPDATE leverancier_pakbon_emballage SET geleverd=? WHERE leverancier_pakbon=? AND leverancier_emballage_artikel=?",
      "INSERT INTO leverancier_pakbon_emballage(leverancier_pakbon, leverancier_emballage_artikel, geleverd) VALUES(?,?,?)",
      "UPDATE leverancier_pakbon_footer SET totaal_emballage_bedrag=? WHERE leverancier_pakbon=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon_emballage",
      "leverancier_pakbon_footer"
    ],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_emballage": [
        "INSERT INTO",
        "UPDATE"
      ],
      "leverancier_pakbon_footer": [
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "new_supplier_deliveries",
    "line": 2625,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "new",
      "packages",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, lokatie.lat_lng, leverancier.guid AS supplier_id, leverancier.naam AS supplier_name, leverancier.adres AS supplier_address, leverancier.postcode AS supplier_postcode, leverancier.plaats AS supplier_city, leverancier.latitude AS supplier_latitude, leverancier.longitude AS supplier_longitude, leverancier_pakbon.guid AS delivery_id, leverancier_pakbon.lever_datum AS delivery_date, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier, leverancier_pakbon LEFT JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id WHERE leverancier.id = leverancier_pakbon.leverancier AND lokatie.id = leverancier_pakbon.lokatie AND leverancier_pakbon.lever_datum >= ? AND leverancier_pakbon.lever_datum <= ? AND leverancier_pakbon.status_levering = ? AND leverancier_pakbon.lmf_levering = ? GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier.guid, leverancier.naam, leverancier.adres, leverancier.postcode, leverancier.plaats, leverancier.latitude, leverancier.longitude, leverancier_pakbon.guid, leverancier_pakbon.lever_datum, lokatie.lat_lng ORDER BY leverancier_pakbon.lever_datum",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND (levering=? OR levering=?))",
      "UPDATE leverancier_pakbon SET guid=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "next_logistics_delivery",
    "line": 2722,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "leveranciers",
      "logistic_packages",
      "new",
      "packaging",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, lokatie.lat_lng, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, leverancier_pakbon.levering AS delivery_id, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier_pakbon, leverancier_pakbon_regel WHERE lokatie.id = leverancier_pakbon.lokatie AND (leverancier_pakbon.transporteur = ? OR leverancier_pakbon.hub=?) AND leverancier_pakbon.lever_datum >= ? AND leverancier_pakbon.lever_datum <= ? AND leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id AND leverancier_pakbon.afgeleverd IS NULL GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier_pakbon.levering, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, lokatie.lat_lng ORDER BY leverancier_pakbon.lever_datum LIMIT 1",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "UPDATE leverancier_pakbon SET levering=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistics_pickup",
    "line": 2819,
    "params": [
      "delivery_id"
    ],
    "calls": [
      "leveranciers",
      "logistic_packages",
      "new",
      "packaging",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel"
    ],
    "sql": [
      "SELECT leverancier.guid AS id, leverancier.id AS supplier_id, leverancier.naam AS name, leverancier.adres AS address, leverancier.postcode, leverancier.plaats AS city, leverancier.latitude, leverancier.longitude, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, leverancier_pakbon.hub, leverancier_pakbon.transporteur AS carrier, leverancier_pakbon.levering AS delivery_id, leverancier_pakbon.lokatie AS lokatie_id, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM leverancier, leverancier_pakbon, leverancier_pakbon_regel WHERE leverancier.id = leverancier_pakbon.leverancier AND (leverancier_pakbon.transporteur = ? OR leverancier_pakbon.hub=?) AND leverancier_pakbon.levering = ? AND leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id GROUP BY leverancier.guid, leverancier.id, leverancier.naam, leverancier.adres, leverancier.postcode, leverancier.plaats, leverancier_pakbon.hub, leverancier_pakbon.transporteur, leverancier_pakbon.levering, leverancier_pakbon.lokatie, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, leverancier.latitude, leverancier.longitude ORDER BY leverancier_pakbon.lever_datum LIMIT 1",
      "SELECT * FROM leverancier WHERE id=?",
      "SELECT * FROM leverancier WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_regel": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistics_delivery",
    "line": 2920,
    "params": [
      "delivery_id"
    ],
    "calls": [
      "leveranciers",
      "logistic_packages",
      "new",
      "packaging",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, lokatie.lat_lng, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, leverancier_pakbon.levering AS delivery_id, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier_pakbon, leverancier_pakbon_regel WHERE lokatie.id = leverancier_pakbon.lokatie AND (leverancier_pakbon.transporteur = ? OR leverancier_pakbon.hub=?) AND leverancier_pakbon.levering = ? AND leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier_pakbon.levering, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, lokatie.lat_lng ORDER BY leverancier_pakbon.lever_datum LIMIT 1",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "UPDATE leverancier_pakbon SET levering=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistics_deliveries",
    "line": 3013,
    "params": [
      "end_date",
      "start_date"
    ],
    "calls": [
      "_lmf_positive_int",
      "_location_partner",
      "_preload_delivery_packages",
      "_preload_location_delivery_suppliers_for_records",
      "_preload_location_partners",
      "leveranciers",
      "logistic_packages",
      "new",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "klant",
      "leverancier",
      "leverancier_marktplaats",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lmf_project",
      "lmf_user_project",
      "lokatie",
      "route",
      "route_lokatie",
      "vers_order"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, lokatie.lat_lng, lokatie.bijzonderheden AS comment, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, leverancier_pakbon.levering AS delivery_id, route_location_order.nummer AS volgnummer, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM leverancier_pakbon JOIN lokatie ON lokatie.id = leverancier_pakbon.lokatie JOIN klant ON klant.id = lokatie.klant LEFT JOIN vers_order ON vers_order.id = leverancier_pakbon.vers_order JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id JOIN ( SELECT routed_stop.lokatie, MIN(routed_stop.nummer) FILTER ( WHERE routed_stop.nummer IS NOT NULL AND routed_stop.nummer >= 0 ) AS nummer, CASE WHEN COUNT(*) FILTER ( WHERE routed_stop.nummer IS NOT NULL AND routed_stop.nummer >= 0 ) > 0 THEN 0 ELSE 1 END AS nummer_missing, MIN(routed_stop.route_lokatie_id) AS route_lokatie_id FROM ( SELECT route_lokatie.lokatie, route_lokatie.nummer, route_lokatie.id AS route_lokatie_id FROM route_lokatie JOIN route route_location_scope ON route_location_scope.id = route_lokatie.route JOIN lokatie route_location_lokatie ON route_location_lokatie.id = route_lokatie.lokatie JOIN klant route_location_klant ON route_location_klant.id = route_location_lokatie.klant WHERE route_lokatie.route = ? AND route_lokatie.lokatie IS NOT NULL AND route_location_klant.actief IS TRUE AND route_location_lokatie.actief IS TRUE AND route_location_lokatie.postcode != '' AND lower(replace(route_location_lokatie.postcode, ' ', '')) != '1066jc' AND length(replace(route_location_lokatie.postcode, ' ', '')) = 6 AND lower(replace(route_location_lokatie.naam, ' ', '')) != lower(replace(route_location_lokatie.postcode, ' ', '')) AND route_location_klant.marktplaats IN ( SELECT leverancier_marktplaats.marktplaats FROM leverancier_marktplaats WHERE leverancier_marktplaats.leverancier = route_location_scope.leverancier ) UNION ALL SELECT route_supplier_pakbon.lokatie, route_lokatie.nummer, route_lokatie.id AS route_lokatie_id FROM route_lokatie JOIN route route_location_scope ON route_location_scope.id = route_lokatie.route JOIN leverancier route_location_leverancier ON route_location_leverancier.id = route_lokatie.leverancier JOIN leverancier_pakbon route_supplier_pakbon ON route_supplier_pakbon.leverancier = route_lokatie.leverancier JOIN lokatie route_location_lokatie ON route_location_lokatie.id = route_supplier_pakbon.lokatie JOIN klant route_location_klant ON route_location_klant.id = route_location_lokatie.klant WHERE route_lokatie.route = ? AND route_lokatie.leverancier IS NOT NULL AND route_location_leverancier.actief IS TRUE AND NOT EXISTS ( SELECT 1 FROM route_lokatie route_customer WHERE route_customer.route = route_lokatie.route AND route_customer.lokatie IS NOT NULL ) AND route_supplier_pakbon.lever_datum BETWEEN ? AND ? AND route_location_klant.actief IS TRUE AND route_location_lokatie.actief IS TRUE AND route_location_lokatie.postcode != '' AND lower(replace(route_location_lokatie.postcode, ' ', '')) != '1066jc' AND length(replace(route_location_lokatie.postcode, ' ', '')) = 6 AND lower(replace(route_location_lokatie.naam, ' ', '')) != lower(replace(route_location_lokatie.postcode, ' ', '')) AND route_location_klant.marktplaats IN ( SELECT leverancier_marktplaats.marktplaats FROM leverancier_marktplaats WHERE leverancier_marktplaats.leverancier = route_location_scope.leverancier ) ) routed_stop GROUP BY routed_stop.lokatie ) route_location_order ON route_location_order.lokatie = lokatie.id WHERE EXISTS ( SELECT 1 FROM lmf_user_project JOIN lmf_project ON lmf_project.id = lmf_user_project.lmf_project WHERE lmf_user_project.lmf_user = ? AND lmf_user_project.actief IS TRUE AND lmf_project.marktplaats = klant.marktplaats ) AND leverancier_pakbon.lever_datum BETWEEN ? AND ? AND (vers_order.marktplaats IS NULL OR vers_order.marktplaats = klant.marktplaats) GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier_pakbon.levering, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, lokatie.lat_lng, route_location_order.nummer, route_location_order.nummer_missing, route_location_order.route_lokatie_id ORDER BY route_location_order.nummer_missing, route_location_order.nummer, route_location_order.route_lokatie_id, lokatie.id, leverancier_pakbon.lever_datum, lokatie.naam",
      "UPDATE leverancier_pakbon SET levering=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "klant": [],
      "leverancier": [],
      "leverancier_marktplaats": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lmf_project": [],
      "lmf_user_project": [],
      "lokatie": [],
      "route": [],
      "route_lokatie": [],
      "vers_order": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "leveranciers",
    "line": 3220,
    "params": [],
    "calls": [
      "_location_date_key",
      "_preload_location_delivery_suppliers_for_records",
      "packages"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::next_logistics_delivery",
      "XLS/LMF.pm::logistics_pickup",
      "XLS/LMF.pm::logistics_delivery",
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::customer_delivery",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "customer_delivery",
    "line": 3255,
    "params": [
      "delivery_id"
    ],
    "calls": [
      "leveranciers",
      "new",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, leverancier_pakbon.levering AS delivery_id, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, lokatie.lat_lng, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier_pakbon LEFT JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id WHERE lokatie.id = leverancier_pakbon.lokatie AND lokatie.klant = ? AND leverancier_pakbon.levering = ? GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier_pakbon.levering, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, lokatie.lat_lng ORDER BY leverancier_pakbon.lever_datum",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "SELECT * FROM leverancier WHERE id IN ( SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "UPDATE leverancier_pakbon SET levering=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "customer_deliveries",
    "line": 3339,
    "params": [
      "end_date",
      "location_id",
      "start_date"
    ],
    "calls": [
      "_location_partner",
      "_preload_guid_packages",
      "_preload_location_delivery_suppliers_for_records",
      "_preload_location_partners",
      "_preload_suppliers_by_id",
      "_supplier_by_id",
      "leveranciers",
      "new",
      "packages",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "JSON_Timestamp"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier_pakbon",
      "leverancier_pakbon_levering",
      "leverancier_pakbon_regel",
      "lokatie",
      "order_status"
    ],
    "sql": [
      "SELECT DISTINCT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, leverancier_pakbon.guid AS slip_id, leverancier_pakbon.levering AS delivery_id, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, leverancier_pakbon.leverancier AS supplier_id, lokatie.lat_lng, leverancier_pakbon_levering.datum AS delivery_time, leverancier_pakbon_levering.eta AS eta, order_status.naam AS delivery_status, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier_pakbon LEFT JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id LEFT JOIN leverancier_pakbon_levering ON leverancier_pakbon_levering.leverancier_pakbon = leverancier_pakbon.id LEFT JOIN order_status ON order_status.id = leverancier_pakbon_levering.order_status WHERE leverancier_pakbon.lokatie = lokatie.id AND lokatie.klant = ? AND lokatie.guid = ? AND leverancier_pakbon.lever_datum BETWEEN ? AND ? GROUP BY lokatie.guid, lokatie.id, lokatie.naam, lokatie.adres, lokatie.postcode, lokatie.plaats, leverancier_pakbon.id, leverancier_pakbon.levering, leverancier_pakbon.lever_datum, leverancier_pakbon.status_levering, leverancier_pakbon_levering.datum, leverancier_pakbon_levering.eta, order_status.naam, lokatie.lat_lng ORDER BY leverancier_pakbon.lever_datum",
      "UPDATE leverancier_pakbon SET levering=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_levering": [],
      "leverancier_pakbon_regel": [],
      "lokatie": [],
      "order_status": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "supplier_deliveries",
    "line": 3470,
    "params": [
      "delivery_id",
      "end_date",
      "start_date"
    ],
    "calls": [
      "_location_partner",
      "_preload_guid_packages",
      "_preload_location_delivery_suppliers_for_records",
      "_preload_location_partners",
      "leveranciers",
      "new",
      "packages",
      "role"
    ],
    "modules": [
      [
        "Data::GUID",
        "new"
      ],
      [
        "XLS::Datum",
        "JSON_Datum"
      ],
      [
        "XLS::Datum",
        "today"
      ]
    ],
    "tables": [
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lokatie"
    ],
    "sql": [
      "SELECT lokatie.guid AS id, lokatie.id AS lokatie_id, lokatie.naam AS name, lokatie.adres AS address, lokatie.postcode, lokatie.plaats AS city, lokatie.lat_lng, leverancier_pakbon.guid AS delivery_id, leverancier_pakbon.leverancier, leverancier_pakbon.lever_datum AS delivery_date, leverancier_pakbon.status_levering AS status, sum(leverancier_pakbon_regel.besteld_aantal) AS packages FROM lokatie, leverancier_pakbon LEFT JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id WHERE lokatie.id = leverancier_pakbon.lokatie AND leverancier_pakbon.leverancier = ? AND",
      "UPDATE leverancier_pakbon SET guid=? WHERE lokatie=? AND lever_datum=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [
      "leverancier_pakbon"
    ],
    "operations": {
      "leverancier_pakbon": [
        "UPDATE"
      ],
      "leverancier_pakbon_regel": [],
      "lokatie": []
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_placeholders",
    "line": 3592,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($count) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_in_clause",
      "XLS/LMF.pm::_preload_location_partners",
      "XLS/LMF.pm::_preload_suppliers_by_id",
      "XLS/LMF.pm::_preload_package_catalogs",
      "XLS/LMF.pm::_preload_locations_by_supplier_date",
      "XLS/LMF.pm::_preload_basic_suppliers_by_location_date",
      "XLS/LMF.pm::_preload_registration_details_by_entity_date",
      "XLS/LMF.pm::_preload_dash_registration_details_by_entity_date",
      "XLS/LMF.pm::_preload_guid_packages",
      "XLS/LMF.pm::_preload_delivery_packages",
      "XLS/LMF.pm::_preload_packaging",
      "XLS/LMF.pm::_preload_location_delivery_suppliers_for_records"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_in_clause",
    "line": 3597,
    "params": [],
    "calls": [
      "_lmf_positive_int",
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($column, $values) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::dash_customers",
      "XLS/LMF.pm::dash_route_customers",
      "XLS/LMF.pm::dash_suppliers",
      "XLS/LMF.pm::dash_orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_route_number_value",
    "line": 3603,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($number) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_route_number_sort"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_route_number_sort",
    "line": 3609,
    "params": [],
    "calls": [
      "_dash_route_number_value"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($left, $right) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::dash_route_customers"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_unique_defined_values",
    "line": 3621,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_dash_marketplace_scope",
      "XLS/LMF.pm::_dash_supplier_marketplaces",
      "XLS/LMF.pm::_dash_in_clause",
      "XLS/LMF.pm::_preload_location_partners",
      "XLS/LMF.pm::_preload_suppliers_by_id",
      "XLS/LMF.pm::_preload_package_catalogs",
      "XLS/LMF.pm::_preload_locations_by_supplier_date",
      "XLS/LMF.pm::_preload_basic_suppliers_by_location_date",
      "XLS/LMF.pm::_preload_registration_details_by_entity_date",
      "XLS/LMF.pm::_preload_dash_registration_details_by_entity_date",
      "XLS/LMF.pm::_preload_guid_packages",
      "XLS/LMF.pm::_preload_delivery_packages",
      "XLS/LMF.pm::_preload_packaging",
      "XLS/LMF.pm::_preload_location_delivery_suppliers_for_records"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_lmf_positive_int",
    "line": 3626,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations",
      "XLS/LMF.pm::_route_plan_route_location_payload",
      "XLS/LMF.pm::_dash_marketplace_scope",
      "XLS/LMF.pm::_dash_supplier_marketplaces",
      "XLS/LMF.pm::dash_route_customers",
      "XLS/LMF.pm::_emballage_source_reference",
      "XLS/LMF.pm::_emballage_source_reference_result",
      "XLS/LMF.pm::_emballage_source_in_scope",
      "XLS/LMF.pm::delivery_stop",
      "XLS/LMF.pm::pickup_stop",
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::_dash_in_clause",
      "XLS/LMF.pm::_logistics_route"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_lmf_truthy",
    "line": 3631,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_route_plan_update_route_locations",
      "XLS/LMF.pm::_dash_marketplace_scope"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_location_date_key",
    "line": 3637,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($location_id, $delivery_date) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_orders",
      "XLS/LMF.pm::hub_incoming",
      "XLS/LMF.pm::hub_outgoing",
      "XLS/LMF.pm::leveranciers",
      "XLS/LMF.pm::_preload_locations_by_supplier_date",
      "XLS/LMF.pm::_preload_basic_suppliers_by_location_date",
      "XLS/LMF.pm::_preload_registration_details_by_entity_date",
      "XLS/LMF.pm::_preload_location_delivery_suppliers_for_records"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_dash_registration_key",
    "line": 3644,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($hub_id, $entity_id, $delivery_date) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::dash_orders",
      "XLS/LMF.pm::_preload_dash_registration_details_by_entity_date"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_location_partners",
    "line": 3652,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT lokatie_leverancier.lokatie AS lokatie_id, lokatie_leverancier.levering, leverancier.* FROM lokatie_leverancier JOIN leverancier ON leverancier.id = lokatie_leverancier.leverancier WHERE lokatie_leverancier.lokatie IN ("
    ],
    "signature": [
      "my ( $args, $location_ids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "lokatie_leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries",
      "XLS/LMF.pm::_location_partner"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_location_partner",
    "line": 3686,
    "params": [],
    "calls": [
      "_preload_location_partners"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $location_id, $delivery_type ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_suppliers_by_id",
    "line": 3696,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier"
    ],
    "sql": [
      "SELECT * FROM leverancier WHERE id IN ("
    ],
    "signature": [
      "my ( $args, $supplier_ids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::_supplier_by_id"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_supplier_by_id",
    "line": 3721,
    "params": [],
    "calls": [
      "_preload_suppliers_by_id"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $supplier_id ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::customer_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_registration_totals",
    "line": 3731,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $rows ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_orders",
      "XLS/LMF.pm::dash_orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_package_catalogs",
    "line": 3745,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel"
    ],
    "sql": [
      "SELECT leverancier_emballage_artikel.leverancier AS supplier_id, leverancier_emballage_artikel.id AS package_id, leverancier_emballage_artikel.omschrijving AS name FROM leverancier_emballage_artikel WHERE leverancier_emballage_artikel.leverancier IN ("
    ],
    "signature": [
      "my ( $args, $supplier_ids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_incoming",
      "XLS/LMF.pm::hub_outgoing"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_locations_by_supplier_date",
    "line": 3780,
    "params": [],
    "calls": [
      "_location_date_key",
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_pakbon",
      "lokatie"
    ],
    "sql": [
      "SELECT leverancier_pakbon.leverancier AS supplier_id, leverancier_pakbon.lever_datum AS delivery_date, lokatie.id AS location_id, lokatie.naam AS name FROM leverancier_pakbon JOIN lokatie ON lokatie.id = leverancier_pakbon.lokatie WHERE leverancier_pakbon.leverancier IN ("
    ],
    "signature": [
      "my ( $args, $records ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_pakbon": [],
      "lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_incoming"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_basic_suppliers_by_location_date",
    "line": 3832,
    "params": [],
    "calls": [
      "_location_date_key",
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT leverancier_pakbon.lokatie AS location_id, leverancier_pakbon.lever_datum AS delivery_date, leverancier.id AS supplier_id, leverancier.naam AS name FROM leverancier_pakbon JOIN leverancier ON leverancier.id = leverancier_pakbon.leverancier WHERE leverancier_pakbon.lokatie IN ("
    ],
    "signature": [
      "my ( $args, $records ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_outgoing"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_registration_details_by_entity_date",
    "line": 3884,
    "params": [],
    "calls": [
      "_location_date_key",
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_emballage_registratie"
    ],
    "sql": [
      "SELECT leverancier_emballage_registratie.",
      "AS entity_id, leverancier_emballage_registratie.datum AS delivery_date, leverancier_emballage_artikel.id, leverancier_emballage_artikel.omschrijving AS name, leverancier_emballage_registratie.kvd AS package_type, sum(COALESCE(leverancier_emballage_registratie.inkomend, 0)) AS incoming_number, sum(COALESCE(leverancier_emballage_registratie.uitgaand, 0)) AS outgoing_number, max(CASE WHEN leverancier_emballage_registratie.bevestigd IS TRUE THEN 1 ELSE 0 END) AS confirmed, COALESCE(sum(COALESCE(leverancier_emballage_registratie.inkomend, 0)::numeric * COALESCE( ( NULLIF(leverancier_emballage_artikel.lengte, 0)::numeric * NULLIF(leverancier_emballage_artikel.breedte, 0)::numeric * NULLIF(leverancier_emballage_artikel.hoogte, 0)::numeric ) / 1000000::numeric, leverancier_emballage_artikel.volume::numeric, 0::numeric )), 0) AS incoming_volume, COALESCE(sum(COALESCE(leverancier_emballage_registratie.uitgaand, 0)::numeric * COALESCE( ( NULLIF(leverancier_emballage_artikel.lengte, 0)::numeric * NULLIF(leverancier_emballage_artikel.breedte, 0)::numeric * NULLIF(leverancier_emballage_artikel.hoogte, 0)::numeric ) / 1000000::numeric, leverancier_emballage_artikel.volume::numeric, 0::numeric )), 0) AS outgoing_volume FROM leverancier_emballage_registratie JOIN leverancier_emballage_artikel ON leverancier_emballage_artikel.id = leverancier_emballage_registratie.leverancier_emballage_artikel WHERE leverancier_emballage_registratie.hub = ? AND leverancier_emballage_registratie."
    ],
    "signature": [
      "my ( $args, $hub_id, $records, $record_field, $entity_column, $cache_name ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_emballage_registratie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_preload_registration_details_by_supplier_date",
      "XLS/LMF.pm::_preload_registration_details_by_location_date"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_registration_details_by_supplier_date",
    "line": 3965,
    "params": [],
    "calls": [
      "_preload_registration_details_by_entity_date"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $hub_id, $records ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_orders",
      "XLS/LMF.pm::hub_incoming"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_registration_details_by_location_date",
    "line": 3972,
    "params": [],
    "calls": [
      "_preload_registration_details_by_entity_date"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $hub_id, $records ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub_orders",
      "XLS/LMF.pm::hub_outgoing"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_dash_registration_details_by_supplier_date",
    "line": 3979,
    "params": [],
    "calls": [
      "_preload_dash_registration_details_by_entity_date"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $records ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::dash_orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_dash_registration_details_by_location_date",
    "line": 3986,
    "params": [],
    "calls": [
      "_preload_dash_registration_details_by_entity_date"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args, $records ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::dash_orders"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_dash_registration_details_by_entity_date",
    "line": 3993,
    "params": [],
    "calls": [
      "_dash_registration_key",
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_emballage_registratie"
    ],
    "sql": [
      "SELECT leverancier_emballage_registratie.hub AS hub_id, leverancier_emballage_registratie.",
      "AS entity_id, leverancier_emballage_registratie.datum AS delivery_date, leverancier_emballage_artikel.id, leverancier_emballage_artikel.omschrijving AS name, leverancier_emballage_registratie.kvd AS package_type, sum(COALESCE(leverancier_emballage_registratie.inkomend, 0)) AS incoming_number, sum(COALESCE(leverancier_emballage_registratie.uitgaand, 0)) AS outgoing_number, max(CASE WHEN leverancier_emballage_registratie.bevestigd IS TRUE THEN 1 ELSE 0 END) AS confirmed, COALESCE(sum(COALESCE(leverancier_emballage_registratie.inkomend, 0)::numeric * COALESCE( ( NULLIF(leverancier_emballage_artikel.lengte, 0)::numeric * NULLIF(leverancier_emballage_artikel.breedte, 0)::numeric * NULLIF(leverancier_emballage_artikel.hoogte, 0)::numeric ) / 1000000::numeric, leverancier_emballage_artikel.volume::numeric, 0::numeric )), 0) AS incoming_volume, COALESCE(sum(COALESCE(leverancier_emballage_registratie.uitgaand, 0)::numeric * COALESCE( ( NULLIF(leverancier_emballage_artikel.lengte, 0)::numeric * NULLIF(leverancier_emballage_artikel.breedte, 0)::numeric * NULLIF(leverancier_emballage_artikel.hoogte, 0)::numeric ) / 1000000::numeric, leverancier_emballage_artikel.volume::numeric, 0::numeric )), 0) AS outgoing_volume FROM leverancier_emballage_registratie JOIN leverancier_emballage_artikel ON leverancier_emballage_artikel.id = leverancier_emballage_registratie.leverancier_emballage_artikel WHERE leverancier_emballage_registratie.hub IN ("
    ],
    "signature": [
      "my ( $args, $records, $record_field, $entity_column, $cache_name ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_emballage_registratie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::_preload_dash_registration_details_by_supplier_date",
      "XLS/LMF.pm::_preload_dash_registration_details_by_location_date"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_guid_packages",
    "line": 4077,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon",
      "leverancier_pakbon_emballage"
    ],
    "sql": [
      "SELECT leverancier_pakbon.guid AS delivery_guid, leverancier_emballage_artikel.id, leverancier_emballage_artikel.code, leverancier_emballage_artikel.omschrijving AS name, leverancier_pakbon_emballage.kvd AS package_type, sum(leverancier_pakbon_emballage.geleverd_volgens_leverancier) AS delivered_supplier, sum(leverancier_pakbon_emballage.retour_volgens_leverancier) AS fetched_supplier, sum(leverancier_pakbon_emballage.geleverd) AS delivered, sum(leverancier_pakbon_emballage.retour) AS fetched FROM leverancier_emballage_artikel, leverancier_pakbon_emballage, leverancier_pakbon WHERE leverancier_emballage_artikel.id = leverancier_pakbon_emballage.leverancier_emballage_artikel AND leverancier_pakbon_emballage.leverancier_pakbon = leverancier_pakbon.id AND leverancier_pakbon.guid IN ("
    ],
    "signature": [
      "my ( $args, $delivery_guids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_emballage": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries",
      "XLS/LMF.pm::_preload_location_delivery_suppliers_for_records",
      "XLS/LMF.pm::packages"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_delivery_packages",
    "line": 4141,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon",
      "leverancier_pakbon_emballage"
    ],
    "sql": [
      "SELECT leverancier_pakbon.levering AS delivery_id, leverancier_emballage_artikel.id, leverancier_emballage_artikel.code, leverancier_emballage_artikel.omschrijving AS name, leverancier_pakbon_emballage.kvd AS package_type, sum(leverancier_pakbon_emballage.geleverd) AS delivered, sum(leverancier_pakbon_emballage.retour) AS fetched FROM leverancier_emballage_artikel, leverancier_pakbon_emballage, leverancier_pakbon WHERE leverancier_emballage_artikel.id = leverancier_pakbon_emballage.leverancier_emballage_artikel AND leverancier_pakbon_emballage.leverancier_pakbon = leverancier_pakbon.id AND leverancier_pakbon.levering IN ("
    ],
    "signature": [
      "my ( $args, $delivery_ids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_emballage": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::logistic_packages"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_packaging",
    "line": 4190,
    "params": [],
    "calls": [
      "_placeholders",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT DISTINCT leverancier_pakbon.levering AS delivery_id, leverancier_emballage_artikel.code, leverancier_emballage_artikel.omschrijving AS name FROM leverancier_emballage_artikel JOIN leverancier_pakbon ON leverancier_pakbon.leverancier = leverancier_emballage_artikel.leverancier WHERE leverancier_pakbon.levering IN ("
    ],
    "signature": [
      "my ( $args, $delivery_ids ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::packaging"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_preload_location_delivery_suppliers_for_records",
    "line": 4224,
    "params": [],
    "calls": [
      "_location_date_key",
      "_placeholders",
      "_preload_guid_packages",
      "_unique_defined_values"
    ],
    "modules": [],
    "tables": [
      "klant",
      "leverancier",
      "leverancier_pakbon",
      "leverancier_pakbon_regel",
      "lmf_project",
      "lmf_user_project",
      "lokatie",
      "lokatie_leverancier",
      "vers_order"
    ],
    "sql": [
      "SELECT leverancier_pakbon.lokatie AS lokatie_id, leverancier_pakbon.lever_datum AS delivery_date, leverancier.id, leverancier.naam, leverancier.adres, leverancier.postcode, leverancier.plaats, leverancier.latitude, leverancier.longitude, leverancier_pakbon.hub, leverancier_pakbon.guid AS delivery_id, COALESCE(sum(leverancier_pakbon_regel.besteld_aantal), 0) AS packages FROM leverancier JOIN leverancier_pakbon ON leverancier_pakbon.leverancier = leverancier.id JOIN lokatie ON lokatie.id = leverancier_pakbon.lokatie JOIN klant ON klant.id = lokatie.klant LEFT JOIN vers_order ON vers_order.id = leverancier_pakbon.vers_order JOIN lokatie_leverancier ON lokatie_leverancier.lokatie = leverancier_pakbon.lokatie AND lokatie_leverancier.leverancier = leverancier.id AND lokatie_leverancier.levering = 3 LEFT JOIN leverancier_pakbon_regel ON leverancier_pakbon_regel.leverancier_pakbon = leverancier_pakbon.id WHERE EXISTS ( SELECT 1 FROM lmf_user_project JOIN lmf_project ON lmf_project.id = lmf_user_project.lmf_project WHERE lmf_user_project.lmf_user = ? AND lmf_user_project.actief IS TRUE AND lmf_project.marktplaats = klant.marktplaats ) AND leverancier_pakbon.lokatie IN ("
    ],
    "signature": [
      "my ( $args, $records ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_regel": [],
      "lmf_project": [],
      "lmf_user_project": [],
      "lokatie": [],
      "lokatie_leverancier": [],
      "vers_order": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::leveranciers",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "packaging",
    "line": 4309,
    "params": [],
    "calls": [
      "_preload_packaging"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::next_logistics_delivery",
      "XLS/LMF.pm::logistics_pickup",
      "XLS/LMF.pm::logistics_delivery"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistic_packages",
    "line": 4319,
    "params": [],
    "calls": [
      "_preload_delivery_packages"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::next_logistics_delivery",
      "XLS/LMF.pm::logistics_pickup",
      "XLS/LMF.pm::logistics_delivery",
      "XLS/LMF.pm::logistics_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "emballage_artikelen_hub",
    "line": 4329,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel"
    ],
    "sql": [
      "SELECT leverancier_emballage_artikel.id, leverancier_emballage_artikel.code, leverancier_emballage_artikel.omschrijving AS name FROM leverancier_emballage_artikel WHERE leverancier_emballage_artikel.leverancier = ? ORDER BY leverancier_emballage_artikel.code"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::stops"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "packages",
    "line": 4352,
    "params": [],
    "calls": [
      "_preload_guid_packages"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::new_supplier_deliveries",
      "XLS/LMF.pm::leveranciers",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "role",
    "line": 4362,
    "params": [],
    "calls": [
      "hub",
      "klant",
      "leverancier",
      "logistiek"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::handle_request",
      "XLS/LMF.pm::stops",
      "XLS/LMF.pm::new_supplier_deliveries",
      "XLS/LMF.pm::next_logistics_delivery",
      "XLS/LMF.pm::logistics_pickup",
      "XLS/LMF.pm::logistics_delivery",
      "XLS/LMF.pm::logistics_deliveries",
      "XLS/LMF.pm::customer_delivery",
      "XLS/LMF.pm::customer_deliveries",
      "XLS/LMF.pm::supplier_deliveries"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "keana_webhook",
    "line": 4392,
    "params": [
      "deliveryId",
      "deliveryTrackingId"
    ],
    "calls": [
      "new",
      "true"
    ],
    "modules": [
      [
        "Keana::API",
        "new"
      ]
    ],
    "tables": [
      "leverancier_pakbon",
      "leverancier_pakbon_levering",
      "order_status",
      "vers_order"
    ],
    "sql": [
      "SELECT id FROM order_status WHERE name = ?",
      "UPDATE vers_order SET hub_status = ?, transport_status = ? WHERE id = ?",
      "SELECT id FROM leverancier_pakbon WHERE vers_order=?",
      "INSERT INTO leverancier_pakbon_levering (datum, commentaar, lmf_user, order_status, leverancier_pakbon, eta, ata, tracking_code) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
    ],
    "signature": [
      "my ($args) = @_"
    ],
    "writes": [
      "leverancier_pakbon_levering",
      "vers_order"
    ],
    "operations": {
      "leverancier_pakbon": [],
      "leverancier_pakbon_levering": [
        "INSERT INTO"
      ],
      "order_status": [],
      "vers_order": [
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLS/LMF.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "klant",
    "line": 4481,
    "params": [
      "location_id"
    ],
    "calls": [
      "new"
    ],
    "modules": [
      [
        "XML::TreePP",
        "new"
      ]
    ],
    "tables": [
      "klant",
      "klant_koppeling",
      "leverancier",
      "leverancier_emballage_artikel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT * FROM klant WHERE id=?",
      "SELECT * FROM lokatie WHERE klant=? AND actief=? ORDER BY naam",
      "SELECT lokatie_leverancier.debiteurnummer, leverancier.id, leverancier.naam, leverancier.adres, leverancier.postcode, leverancier.plaats, leverancier.latitude, leverancier.longitude, lokatie_leverancier.levering FROM lokatie_leverancier, leverancier WHERE leverancier.id = lokatie_leverancier.leverancier AND lokatie_leverancier.lokatie = ? ORDER BY leverancier.naam",
      "SELECT * FROM leverancier_emballage_artikel WHERE leverancier=? ORDER BY omschrijving",
      "SELECT definitie_in_xml FROM klant_koppeling WHERE klant=? AND koppeling=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "klant_koppeling": [],
      "leverancier": [],
      "leverancier_emballage_artikel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::location_comment",
      "XLS/LMF.pm::role"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "hub",
    "line": 4591,
    "params": [],
    "calls": [
      "navigator"
    ],
    "modules": [],
    "tables": [
      "klant",
      "leverancier",
      "leverancier_emballage_artikel",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT * FROM leverancier WHERE id=?",
      "SELECT * FROM lokatie WHERE lat_lng IS NOT NULL AND id IN ( SELECT lokatie FROM lokatie_leverancier WHERE leverancier=?) AND actief=true AND naam!=postcode AND klant IN(SELECT id FROM klant WHERE public=false) ORDER BY lokatie.naam",
      "SELECT levering FROM lokatie_leverancier WHERE lokatie=? AND leverancier=?",
      "SELECT guid AS id, naam AS name, adres AS address, postcode, plaats AS city, latitude, longitude FROM leverancier WHERE id IN(SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)",
      "SELECT * FROM leverancier_emballage_artikel WHERE leverancier=? ORDER BY omschrijving"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier": [],
      "leverancier_emballage_artikel": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::role"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "leverancier_lokaties",
    "line": 4649,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "klant",
      "leverancier",
      "lokatie",
      "lokatie_leverancier"
    ],
    "sql": [
      "SELECT * FROM lokatie WHERE lat_lng IS NOT NULL AND id IN ( SELECT lokatie FROM lokatie_leverancier WHERE leverancier=?) AND actief=true AND naam!=postcode AND klant IN(SELECT id FROM klant WHERE public=false) ORDER BY lokatie.naam",
      "SELECT debiteurnummer, levering FROM lokatie_leverancier WHERE lokatie=? AND leverancier=?",
      "SELECT guid AS id, naam AS name, adres AS address, postcode, plaats AS city, latitude, longitude FROM leverancier WHERE id IN(SELECT leverancier FROM lokatie_leverancier WHERE lokatie=? AND levering=?)"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier": [],
      "lokatie": [],
      "lokatie_leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::leverancier"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "leverancier_emballage_artikelen",
    "line": 4675,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel"
    ],
    "sql": [
      "SELECT * FROM leverancier_emballage_artikel WHERE leverancier=? ORDER BY omschrijving"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::leverancier"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "leverancier",
    "line": 4690,
    "params": [],
    "calls": [
      "leverancier_emballage_artikelen",
      "leverancier_lokaties",
      "navigator",
      "new"
    ],
    "modules": [
      [
        "XML::TreePP",
        "new"
      ]
    ],
    "tables": [
      "leverancier",
      "leverancier_apikey",
      "leverancier_koppeling"
    ],
    "sql": [
      "SELECT * FROM leverancier WHERE id=?",
      "SELECT definitie_in_xml FROM leverancier_koppeling WHERE leverancier=? AND koppeling=?",
      "SELECT key FROM leverancier_apikey WHERE naam=? AND leverancier=?",
      "SELECT definitie_in_xml FROM leverancier_koppeling WHERE leverancier = ? AND koppeling = ?",
      "SELECT definitie_in_xml FROM leverancier_koppeling WHERE leverancier=? AND koppeling=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_apikey": [],
      "leverancier_koppeling": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::role"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "navigator",
    "line": 4768,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "navigator"
    ],
    "sql": [
      "SELECT naam FROM navigator WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "navigator": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::hub",
      "XLS/LMF.pm::leverancier",
      "XLS/LMF.pm::logistiek"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "logistiek",
    "line": 4778,
    "params": [],
    "calls": [
      "_logistics_route",
      "_logistics_route_planning",
      "navigator"
    ],
    "modules": [],
    "tables": [
      "leverancier"
    ],
    "sql": [
      "SELECT * FROM leverancier WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::role"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_logistics_route_planning",
    "line": 4830,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier",
      "lmf_project",
      "marktplaats"
    ],
    "sql": [
      "SELECT leverancier.route_planning FROM lmf_project JOIN marktplaats ON marktplaats.id = lmf_project.marktplaats JOIN leverancier ON leverancier.id = marktplaats.leverancier WHERE lmf_project.id = ?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "lmf_project": [],
      "marktplaats": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistiek"
    ]
  },
  {
    "file": "XLS/LMF.pm",
    "function": "_logistics_route",
    "line": 4843,
    "params": [],
    "calls": [
      "_lmf_positive_int"
    ],
    "modules": [],
    "tables": [
      "route"
    ],
    "sql": [
      "SELECT id, naam AS name FROM route WHERE id=?"
    ],
    "signature": [
      "my ( $args ) = @_"
    ],
    "writes": [],
    "operations": {
      "route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF.pm::logistiek"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "true",
    "line": 11,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::keana_webhook"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "new",
    "line": 18,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($class, %args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "handle_request",
    "line": 23,
    "params": [],
    "calls": [
      "_attention_rank",
      "_chains",
      "_detail_item",
      "_filters",
      "_matches_filters",
      "_overview_item",
      "_page",
      "_pagination",
      "_source_rows",
      "_summary"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_filters",
    "line": 62,
    "params": [],
    "calls": [
      "_boolean_param",
      "_date_epoch",
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_source_rows",
    "line": 129,
    "params": [],
    "calls": [
      "_hub_rows",
      "_packing_rows",
      "_stop_rows"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $args, $filters) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request",
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_packing_rows",
    "line": 138,
    "params": [],
    "calls": [
      "_add_source_filters",
      "_selectall_hashref"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_pakbon",
      "leverancier_pakbon_emballage"
    ],
    "sql": [
      "SELECT emb.id, emb.leverancier_pakbon, emb.leverancier_emballage_artikel, emb.kvd, emb.geleverd, emb.retour, emb.geleverd_volgens_leverancier, emb.retour_volgens_leverancier, emb.ontvangen, emb.verstuurd, pakbon.leverancier, pakbon.lokatie, pakbon.hub, pakbon.lever_datum AS datum, pakbon.guid AS pakbon_guid, pakbon.levering AS levering_id, art.code AS emballage_code, art.omschrijving AS emballage_omschrijving FROM leverancier_pakbon_emballage emb JOIN leverancier_pakbon pakbon ON pakbon.id = emb.leverancier_pakbon LEFT JOIN leverancier_emballage_artikel art ON art.id = emb.leverancier_emballage_artikel WHERE"
    ],
    "signature": [
      "my ($self, $args, $filters) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_pakbon": [],
      "leverancier_pakbon_emballage": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_source_rows"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_hub_rows",
    "line": 160,
    "params": [],
    "calls": [
      "_add_source_filters",
      "_selectall_hashref"
    ],
    "modules": [],
    "tables": [
      "leverancier_emballage_artikel",
      "leverancier_emballage_registratie",
      "leverancier_pakbon"
    ],
    "sql": [
      "SELECT reg.id, reg.hub, reg.leverancier, reg.lokatie, reg.leverancier_emballage_artikel, reg.kvd, reg.inkomend, reg.uitgaand, reg.bevestigd, reg.datum, reg.lmf_user, reg.leverancier_pakbon, reg.levering AS levering_id, pakbon.guid AS pakbon_guid, pakbon.leverancier AS pakbon_leverancier, pakbon.lokatie AS pakbon_lokatie, pakbon.hub AS pakbon_hub, pakbon.lever_datum AS pakbon_datum, art.code AS emballage_code, art.omschrijving AS emballage_omschrijving FROM leverancier_emballage_registratie reg LEFT JOIN leverancier_pakbon pakbon ON pakbon.id = reg.leverancier_pakbon LEFT JOIN leverancier_emballage_artikel art ON art.id = reg.leverancier_emballage_artikel WHERE"
    ],
    "signature": [
      "my ($self, $args, $filters) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_emballage_artikel": [],
      "leverancier_emballage_registratie": [],
      "leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_source_rows"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_stop_rows",
    "line": 181,
    "params": [],
    "calls": [
      "_add_source_filters",
      "_selectall_hashref"
    ],
    "modules": [],
    "tables": [
      "leverancier",
      "leverancier_emballage_artikel",
      "leverancier_emballage_registratie_stop",
      "leverancier_pakbon",
      "lmf_user"
    ],
    "sql": [
      "SELECT stop.id, stop.hub, stop.leverancier, stop.lokatie, stop.leverancier_emballage_artikel, stop.kvd, stop.opgehaald, stop.afgeleverd, stop.datum, stop.lmf_user, stop.stop_id, stop.leverancier_pakbon, pakbon.guid AS pakbon_guid, pakbon.levering AS levering_id, pakbon.leverancier AS pakbon_leverancier, pakbon.lokatie AS pakbon_lokatie, pakbon.hub AS pakbon_hub, pakbon.lever_datum AS pakbon_datum, usr.roepnaam AS actor_first_name, usr.naam AS actor_last_name, usr.leverancier_id AS logistics_party_id, logistics.naam AS logistics_party_name, art.code AS emballage_code, art.omschrijving AS emballage_omschrijving FROM leverancier_emballage_registratie_stop stop LEFT JOIN leverancier_pakbon pakbon ON pakbon.id = stop.leverancier_pakbon LEFT JOIN lmf_user usr ON usr.id = stop.lmf_user LEFT JOIN leverancier logistics ON logistics.id = usr.leverancier_id LEFT JOIN leverancier_emballage_artikel art ON art.id = stop.leverancier_emballage_artikel WHERE"
    ],
    "signature": [
      "my ($self, $args, $filters) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": [],
      "leverancier_emballage_artikel": [],
      "leverancier_emballage_registratie_stop": [],
      "leverancier_pakbon": [],
      "lmf_user": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_source_rows"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_add_source_filters",
    "line": 206,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $where, $bind, $filters, $columns) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_packing_rows",
      "XLS/LMF/EmballageControl.pm::_hub_rows",
      "XLS/LMF/EmballageControl.pm::_stop_rows"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_selectall_hashref",
    "line": 220,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $args, $sql, @bind) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_packing_rows",
      "XLS/LMF/EmballageControl.pm::_hub_rows",
      "XLS/LMF/EmballageControl.pm::_stop_rows"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_chains",
    "line": 230,
    "params": [],
    "calls": [
      "_add_hub",
      "_add_packing",
      "_add_stop",
      "_delivery_index",
      "_finalize_chain",
      "_hard_group_key",
      "_linked_group_key",
      "_merge_metadata",
      "_new_chain"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $rows) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_hard_group_key",
    "line": 255,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $source, $row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains",
      "XLS/LMF/EmballageControl.pm::_linked_group_key"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_linked_group_key",
    "line": 266,
    "params": [],
    "calls": [
      "_delivery_index",
      "_hard_group_key",
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $source, $row, $delivery_keys) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_new_chain",
    "line": 277,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $key) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_merge_metadata",
    "line": 288,
    "params": [],
    "calls": [
      "_canonical_date",
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_add_packing",
    "line": 312,
    "params": [],
    "calls": [
      "_set_slot"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_add_hub",
    "line": 320,
    "params": [],
    "calls": [
      "_add_source",
      "_positive_int",
      "_set_slot"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_add_stop",
    "line": 336,
    "params": [],
    "calls": [
      "_add_source",
      "_positive_int",
      "_set_slot"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_set_slot",
    "line": 356,
    "params": [],
    "calls": [
      "_add_source",
      "_registered_quantity"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $slot, $raw_value, $row, $perspective, $action) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_add_packing",
      "XLS/LMF/EmballageControl.pm::_add_hub",
      "XLS/LMF/EmballageControl.pm::_add_stop"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_add_source",
    "line": 369,
    "params": [],
    "calls": [
      "_canonical_date",
      "_num",
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $row, $perspective, $action, $quantity) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_add_hub",
      "XLS/LMF/EmballageControl.pm::_add_stop",
      "XLS/LMF/EmballageControl.pm::_set_slot"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_finalize_chain",
    "line": 392,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_matches_filters",
    "line": 435,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain, $filters) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_summary",
    "line": 451,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chains) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_overview_item",
    "line": 458,
    "params": [],
    "calls": [
      "_party"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request",
      "XLS/LMF/EmballageControl.pm::_detail_item"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_detail_item",
    "line": 469,
    "params": [],
    "calls": [
      "_overview_item"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $chain) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_page",
    "line": 479,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $items, $offset, $limit) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_pagination",
    "line": 487,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $total, $returned, $offset, $limit) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_party",
    "line": 498,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($type, $id) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_overview_item"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_registered_quantity",
    "line": 503,
    "params": [],
    "calls": [
      "_num"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_set_slot"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_delivery_index",
    "line": 509,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($row) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_chains",
      "XLS/LMF/EmballageControl.pm::_linked_group_key"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_canonical_date",
    "line": 515,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_merge_metadata",
      "XLS/LMF/EmballageControl.pm::_add_source"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_date_epoch",
    "line": 524,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_filters"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_boolean_param",
    "line": 533,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_filters"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_positive_int",
    "line": 542,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_filters",
      "XLS/LMF/EmballageControl.pm::_hard_group_key",
      "XLS/LMF/EmballageControl.pm::_linked_group_key",
      "XLS/LMF/EmballageControl.pm::_merge_metadata",
      "XLS/LMF/EmballageControl.pm::_add_hub",
      "XLS/LMF/EmballageControl.pm::_add_stop",
      "XLS/LMF/EmballageControl.pm::_add_source",
      "XLS/LMF/EmballageControl.pm::_party",
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload",
      "XLS/LMF/RoutePlanImporter.pm::_expected_stopset",
      "XLS/LMF/RoutePlanImporter.pm::_match_payload_to_expected",
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references",
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route",
      "XLS/LMF/RoutePlanImporter.pm::_active_route_owner_project_ids",
      "XLS/LMF/RoutePlanImporter.pm::_user_has_project_access",
      "XLS/LMF/RoutePlanImporter.pm::_routes_by_name_for_transporteur_marketplaces",
      "XLS/LMF/RoutePlanImporter.pm::_marketplace_route_supplier_for_customer_stops",
      "XLS/LMF/RoutePlanImporter.pm::_insert_route_locations",
      "XLS/LMF/RoutePlanImporter.pm::_insert_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_route_reference"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_num",
    "line": 547,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_add_source",
      "XLS/LMF/EmballageControl.pm::_registered_quantity"
    ]
  },
  {
    "file": "XLS/LMF/EmballageControl.pm",
    "function": "_attention_rank",
    "line": 553,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($chain) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "new",
    "line": 8,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($class, %args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "import_route_plan",
    "line": 13,
    "params": [],
    "calls": [
      "_active_route_owner_project_ids",
      "_begin_transaction",
      "_commit_transaction",
      "_error",
      "_expected_stopset",
      "_match_payload_to_expected",
      "_positive_int",
      "_request_payload",
      "_resolve_route",
      "_rollback_transaction",
      "_source_rows",
      "_sync_route_plan",
      "_truthy",
      "_user_has_project_access",
      "_validate_payload",
      "_validate_stop_references"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": []
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_validate_payload",
    "line": 111,
    "params": [],
    "calls": [
      "_allowed_stop_type",
      "_error",
      "_logical_key",
      "_positive_int",
      "_route_reference",
      "_valid_date"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $payload) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_expected_stopset",
    "line": 186,
    "params": [],
    "calls": [
      "_error",
      "_logical_key",
      "_positive_int",
      "_unique_ints"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $source_rows) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_match_payload_to_expected",
    "line": 268,
    "params": [],
    "calls": [
      "_error",
      "_positive_int",
      "_unique_ints"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $payload_stops, $expected_stops) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_validate_stop_references",
    "line": 313,
    "params": [],
    "calls": [
      "_all_location_ids_exist",
      "_all_supplier_ids_exist",
      "_error",
      "_positive_int",
      "_unique_ints"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $stops) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_resolve_route",
    "line": 327,
    "params": [],
    "calls": [
      "_error",
      "_insert_route",
      "_insert_route_locations",
      "_marketplace_route_supplier_for_customer_stops",
      "_positive_int",
      "_route_by_id",
      "_routes_by_name_for_transporteur_marketplaces"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_sync_route_plan",
    "line": 354,
    "params": [],
    "calls": [
      "_defer_sequence_constraint",
      "_delete_stop",
      "_delete_stop_links",
      "_error",
      "_existing_links",
      "_existing_stops",
      "_find_route_plan",
      "_find_route_plan_by_id",
      "_insert_route_plan",
      "_insert_stop",
      "_lock_route_plan",
      "_mark_route_plan_planned",
      "_mutable_status",
      "_sync_stop_links",
      "_update_stop_sequence"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $args) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_sync_stop_links",
    "line": 423,
    "params": [],
    "calls": [
      "_delete_stop_link",
      "_insert_stop_link"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $stop_id, $wanted_source_ids, $existing) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_active_route_owner_project_ids",
    "line": 443,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [
      "lmf_user",
      "route"
    ],
    "sql": [
      "SELECT DISTINCT lmf_user.lmf_project FROM route JOIN lmf_user ON lmf_user.leverancier_id = route.leverancier WHERE route.id=? AND lmf_user.actief IS TRUE AND lmf_user.logistiek IS TRUE AND lmf_user.lmf_project IS NOT NULL ORDER BY lmf_user.lmf_project"
    ],
    "signature": [
      "my ($self, $dbh, $route_id) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_user": [],
      "route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_user_has_project_access",
    "line": 463,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [
      "lmf_user_project"
    ],
    "sql": [
      "SELECT 1 FROM lmf_user_project WHERE lmf_user=? AND lmf_project=? AND actief IS TRUE LIMIT 1"
    ],
    "signature": [
      "my ($self, $dbh, $user_id, $lmf_project) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_user_project": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_route_by_id",
    "line": 476,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "route"
    ],
    "sql": [
      "SELECT id, naam FROM route WHERE id=?"
    ],
    "signature": [
      "my ($self, $dbh, $route_id) = @_"
    ],
    "writes": [],
    "operations": {
      "route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_routes_by_name_for_transporteur_marketplaces",
    "line": 481,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [
      "leverancier_marktplaats",
      "marktplaats",
      "route"
    ],
    "sql": [
      "SELECT DISTINCT route.id, route.naam FROM route JOIN marktplaats ON marktplaats.leverancier = route.leverancier JOIN leverancier_marktplaats ON leverancier_marktplaats.marktplaats = marktplaats.id WHERE route.naam=? AND leverancier_marktplaats.leverancier=? AND marktplaats.leverancier IS NOT NULL ORDER BY route.id"
    ],
    "signature": [
      "my ($self, $dbh, $route_name, $transporteur_id) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_marktplaats": [],
      "marktplaats": [],
      "route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_marketplace_route_supplier_for_customer_stops",
    "line": 502,
    "params": [],
    "calls": [
      "_error",
      "_positive_int",
      "_unique_ints"
    ],
    "modules": [],
    "tables": [
      "klant",
      "leverancier_marktplaats",
      "lokatie",
      "marktplaats"
    ],
    "sql": [
      "SELECT DISTINCT marktplaats.id AS marketplace_id, marktplaats.leverancier AS supplier_id FROM lokatie JOIN klant ON klant.id = lokatie.klant JOIN marktplaats ON marktplaats.id = klant.marktplaats JOIN leverancier_marktplaats ON leverancier_marktplaats.marktplaats = marktplaats.id WHERE lokatie.id IN ($placeholders) AND leverancier_marktplaats.leverancier=? AND marktplaats.leverancier IS NOT NULL ORDER BY marktplaats.id, marktplaats.leverancier",
      "SELECT marktplaats.id AS marketplace_id, marktplaats.leverancier AS supplier_id FROM marktplaats JOIN leverancier_marktplaats transporteur_marktplaats ON transporteur_marktplaats.marktplaats = marktplaats.id AND transporteur_marktplaats.leverancier=? JOIN leverancier_marktplaats supplier_marktplaats ON supplier_marktplaats.marktplaats = marktplaats.id WHERE supplier_marktplaats.leverancier IN ($placeholders) AND marktplaats.leverancier IS NOT NULL GROUP BY marktplaats.id, marktplaats.leverancier HAVING count(DISTINCT supplier_marktplaats.leverancier)=? ORDER BY marktplaats.id, marktplaats.leverancier"
    ],
    "signature": [
      "my ($self, $dbh, $transporteur_id, $stops) = @_"
    ],
    "writes": [],
    "operations": {
      "klant": [],
      "leverancier_marktplaats": [],
      "lokatie": [],
      "marktplaats": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_insert_route",
    "line": 562,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "route"
    ],
    "sql": [
      "INSERT INTO route(leverancier, naam) VALUES(?, ?) RETURNING id"
    ],
    "signature": [
      "my ($self, $dbh, $supplier_id, $route_name) = @_"
    ],
    "writes": [
      "route"
    ],
    "operations": {
      "route": [
        "INSERT INTO"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_insert_route_locations",
    "line": 572,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [
      "route_lokatie"
    ],
    "sql": [
      "INSERT INTO route_lokatie(route, lokatie, nummer) VALUES(?, ?, ?)",
      "INSERT INTO route_lokatie(route, leverancier, nummer) VALUES(?, ?, ?)"
    ],
    "signature": [
      "my ($self, $dbh, $route_id, $stops) = @_"
    ],
    "writes": [
      "route_lokatie"
    ],
    "operations": {
      "route_lokatie": [
        "INSERT INTO"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_request_payload",
    "line": 599,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $params) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_source_rows",
    "line": 608,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier_pakbon",
      "route_lokatie"
    ],
    "sql": [
      "SELECT DISTINCT leverancier_pakbon.id AS leverancier_pakbon_id, leverancier_pakbon.leverancier AS supplier_id, CASE WHEN route_lokatie.lokatie IS NOT NULL THEN leverancier_pakbon.lokatie ELSE NULL END AS location_id, leverancier_pakbon.hub AS hub_id FROM route_lokatie JOIN leverancier_pakbon ON ( ( route_lokatie.lokatie IS NOT NULL AND leverancier_pakbon.lokatie = route_lokatie.lokatie ) OR ( route_lokatie.leverancier IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM route_lokatie route_customer WHERE route_customer.route = route_lokatie.route AND route_customer.lokatie IS NOT NULL ) AND leverancier_pakbon.leverancier = route_lokatie.leverancier ) ) WHERE route_lokatie.route = ? AND leverancier_pakbon.lever_datum::date = ? AND ( leverancier_pakbon.transporteur = ? OR leverancier_pakbon.transporteur IS NULL ) ORDER BY leverancier_pakbon.id"
    ],
    "signature": [
      "my ($self, $dbh, $args) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier_pakbon": [],
      "route_lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::handle_request",
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_all_supplier_ids_exist",
    "line": 656,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "leverancier"
    ],
    "sql": [
      "SELECT count(DISTINCT id) FROM leverancier WHERE id IN ($placeholders)"
    ],
    "signature": [
      "my ($self, $dbh, $ids) = @_"
    ],
    "writes": [],
    "operations": {
      "leverancier": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_all_location_ids_exist",
    "line": 669,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lokatie"
    ],
    "sql": [
      "SELECT count(DISTINCT id) FROM lokatie WHERE id IN ($placeholders)"
    ],
    "signature": [
      "my ($self, $dbh, $ids) = @_"
    ],
    "writes": [],
    "operations": {
      "lokatie": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_find_route_plan",
    "line": 682,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_route"
    ],
    "sql": [
      "SELECT id, status FROM lmf_route WHERE lmf_project=? AND route_id=? AND route_date=? AND transporteur_id=?"
    ],
    "signature": [
      "my ($self, $dbh, $args) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_insert_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_find_route_plan_by_id",
    "line": 691,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_route"
    ],
    "sql": [
      "SELECT id, status FROM lmf_route WHERE id=?"
    ],
    "signature": [
      "my ($self, $dbh, $id) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_insert_route_plan",
    "line": 696,
    "params": [],
    "calls": [
      "_find_route_plan",
      "_positive_int"
    ],
    "modules": [],
    "tables": [
      "lmf_route"
    ],
    "sql": [
      "INSERT INTO lmf_route(lmf_project, nummer, naam, route_id, route_date, transporteur_id, status) VALUES(?, ?, ?, ?, ?, ?, 'draft') ON CONFLICT ON CONSTRAINT lmf_route_project_route_date_transporteur_uid DO NOTHING RETURNING id"
    ],
    "signature": [
      "my ($self, $dbh, $args) = @_"
    ],
    "writes": [
      "lmf_route"
    ],
    "operations": {
      "lmf_route": [
        "INSERT INTO"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_lock_route_plan",
    "line": 722,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_route"
    ],
    "sql": [
      "SELECT id, status FROM lmf_route WHERE id=? FOR UPDATE"
    ],
    "signature": [
      "my ($self, $dbh, $id) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_route": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_existing_stops",
    "line": 727,
    "params": [],
    "calls": [
      "_logical_key"
    ],
    "modules": [],
    "tables": [
      "lmf_stop"
    ],
    "sql": [
      "SELECT id, stop_type, leverancier AS supplier_id, lokatie AS location_id, volgnummer FROM lmf_stop WHERE lmf_route=? ORDER BY id FOR UPDATE"
    ],
    "signature": [
      "my ($self, $dbh, $lmf_route_id) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_stop": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_existing_links",
    "line": 746,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop",
      "lmf_stop_leverancier_pakbon"
    ],
    "sql": [
      "SELECT lmf_stop_leverancier_pakbon.lmf_stop, lmf_stop_leverancier_pakbon.leverancier_pakbon FROM lmf_stop_leverancier_pakbon JOIN lmf_stop ON lmf_stop.id = lmf_stop_leverancier_pakbon.lmf_stop WHERE lmf_stop.lmf_route=?"
    ],
    "signature": [
      "my ($self, $dbh, $lmf_route_id) = @_"
    ],
    "writes": [],
    "operations": {
      "lmf_stop": [],
      "lmf_stop_leverancier_pakbon": []
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_insert_stop",
    "line": 763,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop"
    ],
    "sql": [
      "INSERT INTO lmf_stop(lmf_route, leverancier, lokatie, volgnummer, stop_type) VALUES(?, ?, ?, ?, ?) RETURNING id"
    ],
    "signature": [
      "my ($self, $dbh, $lmf_route_id, $stop) = @_"
    ],
    "writes": [
      "lmf_stop"
    ],
    "operations": {
      "lmf_stop": [
        "INSERT INTO"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_update_stop_sequence",
    "line": 775,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop"
    ],
    "sql": [
      "UPDATE lmf_stop SET volgnummer=? WHERE id=?"
    ],
    "signature": [
      "my ($self, $dbh, $stop_id, $sequence) = @_"
    ],
    "writes": [
      "lmf_stop"
    ],
    "operations": {
      "lmf_stop": [
        "UPDATE"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_insert_stop_link",
    "line": 780,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop_leverancier_pakbon"
    ],
    "sql": [
      "INSERT INTO lmf_stop_leverancier_pakbon(lmf_stop, leverancier_pakbon) VALUES(?, ?) ON CONFLICT DO NOTHING"
    ],
    "signature": [
      "my ($self, $dbh, $stop_id, $source_id) = @_"
    ],
    "writes": [
      "lmf_stop_leverancier_pakbon"
    ],
    "operations": {
      "lmf_stop_leverancier_pakbon": [
        "INSERT INTO"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_stop_links"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_delete_stop_link",
    "line": 790,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop_leverancier_pakbon"
    ],
    "sql": [
      "DELETE FROM lmf_stop_leverancier_pakbon WHERE lmf_stop=? AND leverancier_pakbon=?"
    ],
    "signature": [
      "my ($self, $dbh, $stop_id, $source_id) = @_"
    ],
    "writes": [
      "lmf_stop_leverancier_pakbon"
    ],
    "operations": {
      "lmf_stop_leverancier_pakbon": [
        "DELETE FROM"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_stop_links"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_delete_stop_links",
    "line": 795,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop_leverancier_pakbon"
    ],
    "sql": [
      "DELETE FROM lmf_stop_leverancier_pakbon WHERE lmf_stop=?"
    ],
    "signature": [
      "my ($self, $dbh, $stop_id) = @_"
    ],
    "writes": [
      "lmf_stop_leverancier_pakbon"
    ],
    "operations": {
      "lmf_stop_leverancier_pakbon": [
        "DELETE FROM"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_delete_stop",
    "line": 800,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_stop"
    ],
    "sql": [
      "DELETE FROM lmf_stop WHERE id=?"
    ],
    "signature": [
      "my ($self, $dbh, $stop_id) = @_"
    ],
    "writes": [
      "lmf_stop"
    ],
    "operations": {
      "lmf_stop": [
        "DELETE FROM"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_mark_route_plan_planned",
    "line": 805,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_route"
    ],
    "sql": [
      "UPDATE lmf_route SET status='planned', updated_at=CURRENT_TIMESTAMP WHERE id=?"
    ],
    "signature": [
      "my ($self, $dbh, $lmf_route_id) = @_"
    ],
    "writes": [
      "lmf_route"
    ],
    "operations": {
      "lmf_route": [
        "UPDATE"
      ]
    },
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_defer_sequence_constraint",
    "line": 810,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [
      "SET CONSTRAINTS lmf_stop_route_volgnummer_uid DEFERRED"
    ],
    "signature": [
      "my ($self, $dbh) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_begin_transaction",
    "line": 815,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_commit_transaction",
    "line": 830,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $owns_transaction) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": true,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_rollback_transaction",
    "line": 836,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($self, $dbh, $owns_transaction) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_error",
    "line": 842,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($http_code, $error_code, $message, $details) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload",
      "XLS/LMF/RoutePlanImporter.pm::_expected_stopset",
      "XLS/LMF/RoutePlanImporter.pm::_match_payload_to_expected",
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references",
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route",
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_marketplace_route_supplier_for_customer_stops"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_logical_key",
    "line": 859,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($type, $supplier_id, $location_id) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload",
      "XLS/LMF/RoutePlanImporter.pm::_expected_stopset",
      "XLS/LMF/RoutePlanImporter.pm::_existing_stops"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_allowed_stop_type",
    "line": 867,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($type) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_mutable_status",
    "line": 872,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($status) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_sync_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_positive_int",
    "line": 877,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/EmballageControl.pm::_filters",
      "XLS/LMF/EmballageControl.pm::_hard_group_key",
      "XLS/LMF/EmballageControl.pm::_linked_group_key",
      "XLS/LMF/EmballageControl.pm::_merge_metadata",
      "XLS/LMF/EmballageControl.pm::_add_hub",
      "XLS/LMF/EmballageControl.pm::_add_stop",
      "XLS/LMF/EmballageControl.pm::_add_source",
      "XLS/LMF/EmballageControl.pm::_party",
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload",
      "XLS/LMF/RoutePlanImporter.pm::_expected_stopset",
      "XLS/LMF/RoutePlanImporter.pm::_match_payload_to_expected",
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references",
      "XLS/LMF/RoutePlanImporter.pm::_resolve_route",
      "XLS/LMF/RoutePlanImporter.pm::_active_route_owner_project_ids",
      "XLS/LMF/RoutePlanImporter.pm::_user_has_project_access",
      "XLS/LMF/RoutePlanImporter.pm::_routes_by_name_for_transporteur_marketplaces",
      "XLS/LMF/RoutePlanImporter.pm::_marketplace_route_supplier_for_customer_stops",
      "XLS/LMF/RoutePlanImporter.pm::_insert_route_locations",
      "XLS/LMF/RoutePlanImporter.pm::_insert_route_plan",
      "XLS/LMF/RoutePlanImporter.pm::_route_reference"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_route_reference",
    "line": 882,
    "params": [],
    "calls": [
      "_positive_int"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_truthy",
    "line": 893,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::import_route_plan"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_valid_date",
    "line": 899,
    "params": [],
    "calls": [
      "_leap_year"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($value) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_validate_payload"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_leap_year",
    "line": 910,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($year) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_valid_date"
    ]
  },
  {
    "file": "XLS/LMF/RoutePlanImporter.pm",
    "function": "_unique_ints",
    "line": 917,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF/RoutePlanImporter.pm::_expected_stopset",
      "XLS/LMF/RoutePlanImporter.pm::_match_payload_to_expected",
      "XLS/LMF/RoutePlanImporter.pm::_validate_stop_references",
      "XLS/LMF/RoutePlanImporter.pm::_marketplace_route_supplier_for_customer_stops"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "handler",
    "line": 36,
    "params": [
      "Authorization",
      "POSTDATA",
      "message",
      "url",
      "username"
    ],
    "calls": [
      "_build_cgi",
      "_capture_request_body",
      "_populate_request_params",
      "_request_method",
      "authen",
      "authorization",
      "credentials",
      "request"
    ],
    "modules": [
      [
        "Apache2::Cookie::Jar",
        "new"
      ],
      [
        "XLS::Base",
        "new"
      ],
      [
        "XLS::LMF",
        "lmf_bezoeker"
      ],
      [
        "XLS::LMF",
        "new"
      ]
    ],
    "tables": [
      "domain",
      "lmf_log"
    ],
    "sql": [
      "SELECT title, logo, favicon, achtergrond AS background FROM domain WHERE naam=?",
      "SELECT title, logo, favicon, achtergrond AS background FROM domain WHERE naam=?",
      "INSERT INTO lmf_log(username, bericht) VALUES(?,?)"
    ],
    "signature": [],
    "writes": [
      "lmf_log"
    ],
    "operations": {
      "domain": [],
      "lmf_log": [
        "INSERT INTO"
      ]
    },
    "commits": true,
    "callers": []
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "authorization",
    "line": 173,
    "params": [],
    "calls": [
      "_extract_uuid_token"
    ],
    "modules": [],
    "tables": [
      "lmf_user"
    ],
    "sql": [
      "SELECT * FROM lmf_user WHERE token=? AND actief=?"
    ],
    "signature": [],
    "writes": [],
    "operations": {
      "lmf_user": []
    },
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "credentials",
    "line": 187,
    "params": [],
    "calls": [
      "_extract_uuid_token"
    ],
    "modules": [],
    "tables": [
      "lmf_user"
    ],
    "sql": [
      "SELECT email, password FROM lmf_user WHERE token=?"
    ],
    "signature": [],
    "writes": [],
    "operations": {
      "lmf_user": []
    },
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_extract_uuid_token",
    "line": 218,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($token) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLS/LMF.pm::check_token",
      "XLSLMFHandler.pm::authorization",
      "XLSLMFHandler.pm::credentials"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_build_cgi",
    "line": 232,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($r, $raw_body) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_capture_request_body",
    "line": 239,
    "params": [],
    "calls": [
      "_header_value"
    ],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($r) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_request_method",
    "line": 274,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($r) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_populate_request_params",
    "line": 287,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($cgi, $raw_body) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "_header_value",
    "line": 308,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [
      "my ($r, $name) = @_"
    ],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::_capture_request_body"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "request",
    "line": 320,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [],
    "sql": [],
    "signature": [],
    "writes": [],
    "operations": {},
    "commits": false,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  },
  {
    "file": "XLSLMFHandler.pm",
    "function": "authen",
    "line": 331,
    "params": [],
    "calls": [],
    "modules": [],
    "tables": [
      "lmf_user"
    ],
    "sql": [
      "SELECT * FROM lmf_user WHERE email=? AND password=? AND actief=?",
      "UPDATE lmf_user SET last_login=now(), last_login_from=? WHERE token=?"
    ],
    "signature": [],
    "writes": [
      "lmf_user"
    ],
    "operations": {
      "lmf_user": [
        "UPDATE"
      ]
    },
    "commits": true,
    "callers": [
      "XLSLMFHandler.pm::handler"
    ]
  }
]
Legenda · bewijs en verbindingen

Bewijsstatus

CONFIRMED Aangetroffen in bron of catalogus; niet automatisch foutloos livegedrag.

LIKELY Gevolgtrekking met onderbouwing.

UNCLEAR Onvoldoende bewijs voor deze koppeling of werking.

NOT FOUND Niet aangetroffen binnen de onderzochte scope.

FUTURE / PROPOSED Voorstel; geen huidige functionaliteit.

Relaties

direct · Aangetroffen rechtstreekse referentie of aanroep.

derived · Afgeleid door selectie, groepering of berekening.

conditional · Alleen bij de genoemde voorwaarden of aanwezige bronverwijzing.

not active · Code/model aanwezig, niet aangesloten op het beschreven pad.

unclear · Verbinding niet vastgesteld.