<% /*
    $Revision$
    $Id$

    File:           model_salesinvoices.inc

    Description:    Verkoopfactuur model.
    Parameters:
    Context:

    Notes:          TODO: definitieve namen geven

*/
%>
<%
function model_fin_verkoopfactuurregels()
{
  this.table = "fin_verkoopfactuur";
  this.primary = "fin_verkoopfactuur_key";
  this.records_name = "saleinvoicelines";
  this.record_name = "saleinvoiceline";
  this.fields = {
    "id": {
      "dbs": "fin_verkoopfactuur_key",
      "label": L("lcl_fin_verkoopfactuur_key"),
      "typ": "key",
      "filter": "exact",
      "seq": "fin_s_fin_verkoopfactuur_key"
    },
    "creation": {
      "dbs": "fin_verkoopfactuur_aanmaak",
      "label": L("lcl_fin_verkoopfactuur_aanmaak"),
      "typ": "datetime",
      "readonly": true,
      hidden: true
    },
    "name": {
      "dbs": "fin_verkoopfactuur_id",
      "label": L("lcl_fin_verkoopfactuur_id"),
      "typ": "varchar"
    },
    "head": {
      "dbs": "fin_verkoopfactuurkop_key",
      "label": L("fin_verkoopfactuurkop"),
      "typ": "key"
    },
    "invoicedate": {
      "dbs": "fin_verkoopfactuur_datum",
      "label": L("lcl_fin_verkoopfactuur_datum"),
      "typ": "datetime"  // date?
    },
    "description": {
      "dbs": "fin_verkoopfactuur_omschr",
      "label": L("lcl_fin_verkoopfactuur_omschr"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_xmlnode": {
      "dbs": "fin_verkoopfactuur_xmlnode",
      "label": L("lcl_fin_verkoopfactuur_xmlnode"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_refkey": {
      "dbs": "fin_verkoopfactuur_refkey",
      "label": L("lcl_fin_verkoopfactuur_refkey"),
      "typ": "varchar",
      "filter": "exact"
    },
    "account": {
      "dbs": "prs_kostenplaats_key",
      "label": L("lcl_prs_kosten"),
      "typ": "key",
      "foreign": "prs_kostenplaats",
      "filter": "exact"
    },
    "accountnumber": {  // frozen
      "dbs": "prs_kostenplaats_nr",
      "label": L("lcl_prs_dept_name"),
      "typ": "varchar"
    },
    "accountname": { // frozen
      "dbs": "prs_kostenplaats_omschrijving",
      "label": L("lcl_prs_dept_desc"),
      "typ": "varchar",
      "filter": "like"
    },
    "prs_kostenplaatsgrp_oms": {
      "dbs": "prs_kostenplaatsgrp_oms",
      "label": L("lcl_prs_kostenpl_group"),
      "typ": "varchar"
    },
    "prs_kostensoort_oms": {
      "dbs": "prs_kostensoort_oms",
      "label": L("lcl_charge_type"),
      "typ": "varchar"
    },
    "prs_kostensoort_opmerking": {
      "dbs": "prs_kostensoort_opmerking",
      "label": L("lcl_charge_type_remark"),
      "typ": "varchar"
    },
    "prs_kostensoort_refcode": {
      "dbs": "prs_kostensoort_refcode",
      "label": L("lcl_prs_kostensoort_refcode"),
      "typ": "varchar"
    },
    "prs_bedrijf_key": {
      "dbs": "prs_bedrijf_key",
      "label": L("lcl_prs_companies_name"),
      "typ": "key",
      "foreign": "prs_bedrijf",
      "filter": "exact"
    },
    "prs_debiteur_naam": {
      "dbs": "prs_debiteur_naam",
      "label": L("lcl_prs_debiteur_naam"),
      "typ": "varchar"
    },
    "prs_kostensoortgrp_oms": {
      "dbs": "prs_kostensoortgrp_oms",
      "label": L("lcl_prs_kostensoortgrp_oms"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_bedrag": {
      "dbs": "fin_verkoopfactuur_bedrag",
      "label": L("lcl_fin_verkoopfactuur_bedrag"),
      "iscurrency": true,
      "typ": "float",
      "total": true
    },
    "fin_verkoopfactuur_btw": {
      "dbs": "fin_verkoopfactuur_btw",
      "label": L("lcl_fin_verkoopfactuur_btw"),
      "iscurrency": true,
      "typ": "float",
      "total": true
    },
    "fin_btwtabelwaarde_code": {
      "dbs": "fin_btwtabelwaarde_code",
      "label": L("lcl_fin_btwtabelwaarde_code"),
      "typ": "varchar"
    },
    "fin_btwtabelwaarde_oms": {
      "dbs": "fin_btwtabelwaarde_oms",
      "label": L("lcl_fin_btwtabelwaarde_oms"),
      "typ": "varchar"
    },
    "fin_btwtabelwaarde_perc": {
      "dbs": "fin_btwtabelwaarde_perc",
      "label": L("lcl_fin_btwtabelwaarde_perc"),
      "typ": "number",
      "datatype": "float"
    },
    "fin_btwtabelwaarde_verlegd": {
      "dbs": "fin_btwtabelwaarde_verlegd",
      "label": L("lcl_fin_btwtabelwaarde_verlegd"),
      "typ": "number"
    },
    "fin_verkoopfactuur_maand": {
      "dbs": "fin_verkoopfactuur_maand",
      "label": L("lcl_fin_verkoopfactuur_maand"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_n1": {
      "dbs": "fin_verkoopfactuur_n1",
      "label": L("lcl_fin_verkoopfactuur_n1"),
      "typ": "number",
      "iscurrency": true,
      "datatype": "float"
    },
    "fin_verkoopfactuur_n2": {
      "dbs": "fin_verkoopfactuur_n2",
      "label": L("lcl_fin_verkoopfactuur_n2"),
      "typ": "number",
      "iscurrency": true,
      "datatype": "float"
    },
    "fin_verkoopfactuur_n3": {
      "dbs": "fin_verkoopfactuur_n3",
      "label": L("lcl_fin_verkoopfactuur_n3"),
      "typ": "number",
      "iscurrency": true,
      "datatype": "float"
    },
    "fin_verkoopfactuur_n4": {
      "dbs": "fin_verkoopfactuur_n4",
      "label": L("lcl_fin_verkoopfactuur_n4"),
      "typ": "number",
      "iscurrency": true,
      "datatype": "float"
    },
    "fin_verkoopfactuur_n5": {
      "dbs": "fin_verkoopfactuur_n5",
      "label": L("lcl_fin_verkoopfactuur_n5"),
      "typ": "number",
      "iscurrency": true,
      "datatype": "float"
    },
    "fin_verkoopfactuur_c1": {
      "dbs": "fin_verkoopfactuur_c1",
      "label": L("lcl_fin_verkoopfactuur_c1"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c2": {
      "dbs": "fin_verkoopfactuur_c2",
      "label": L("lcl_fin_verkoopfactuur_c2"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c3": {
      "dbs": "fin_verkoopfactuur_c3",
      "label": L("lcl_fin_verkoopfactuur_c3"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c4": {
      "dbs": "fin_verkoopfactuur_c4",
      "label": L("lcl_fin_verkoopfactuur_c4"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c5": {
      "dbs": "fin_verkoopfactuur_c5",
      "label": L("lcl_fin_verkoopfactuur_c5"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c6": {
      "dbs": "fin_verkoopfactuur_c6",
      "label": L("lcl_fin_verkoopfactuur_c6"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c7": {
      "dbs": "fin_verkoopfactuur_c7",
      "label": L("lcl_fin_verkoopfactuur_c7"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_c8": {
      "dbs": "fin_verkoopfactuur_c8",
      "label": L("lcl_fin_verkoopfactuur_c8"),
      "typ": "varchar"
    },
    "fin_verkoopfactuur_d1": {
      "dbs": "fin_verkoopfactuur_d1",
      "label": L("lcl_fin_verkoopfactuur_d1"),
      "typ": "datetime"
    },
    "fin_verkoopfactuur_d2": {
      "dbs": "fin_verkoopfactuur_d2",
      "label": L("lcl_fin_verkoopfactuur_d2"),
      "typ": "datetime"
    },
    "fin_verkoopfactuur_d3": {
      "dbs": "fin_verkoopfactuur_d3",
      "label": L("lcl_fin_verkoopfactuur_d3"),
      "typ": "datetime"
    },
    "fin_verkoopfactuur_d4": {
      "dbs": "fin_verkoopfactuur_d4",
      "label": L("lcl_fin_verkoopfactuur_d4"),
      "typ": "datetime"
    },
    "fin_verkoopfactuur_d5": {
      "dbs": "fin_verkoopfactuur_d5",
      "label": L("lcl_fin_verkoopfactuur_d5"),
      "typ": "datetime"
    }
  };
  this.list = {
    "columns": [
      "name",
      "fin_verkoopfactuur_xmlnode",
      "fin_verkoopfactuur_refkey",
      "invoicedate",
      "fin_verkoopfactuur_bedrag",
      "fin_verkoopfactuur_btw",
      "fin_verkoopfactuur_c1",
      "fin_verkoopfactuur_n1",
      "fin_verkoopfactuur_d1"
    ]
  };
  this.autfunction = "WEB_VERFAC";
  this.record_title = L("lcl_verkoopfactuurregel"),
  this.records_title = L("lcl_verkoopfactuurregels");
  this.show = {};
  this.edit = {};

  // api2.generic_REST(this); als we put-post-delete ondersteunen
  this.REST_GET = generic_REST_GET(this); // Alleen de GET
}

// Dit is het model voor de factuurregels van een enkele xmlnode/refkey
model_fin_verkoopfactuur = function()
{
    this.table = "verkoopfactuur"
    this.tablesql = "(SELECT fin_verkoopfactuur_id"
                  + "      , fin_verkoopfactuurkop_key"
                  + "      , fin_verkoopfactuur_datum"
                  + "      , fin_verkoopfactuur_xmlnode"
                  + "      , fin_verkoopfactuur_refkey"
                  + "      , SUM(fin_verkoopfactuur_bedrag) fin_verkoopfactuur_bedrag"
                  + "      , SUM(fin_verkoopfactuur_btw) fin_verkoopfactuur_btw"
                  + "      , COUNT(*) aantalregels"
                  + "   FROM FIN_VERKOOPFACTUUR"
                  + "  GROUP BY fin_verkoopfactuur_id"
                  + "         , fin_verkoopfactuurkop_key"
                  + "         , fin_verkoopfactuur_datum"
                  + "         , fin_verkoopfactuur_xmlnode"
                  + "         , fin_verkoopfactuur_refkey) verkoopfactuur";
    this.fields = {
        "id": {
          "dbs": "fin_verkoopfactuurkop_key",
          "label": L("fin_verkoopfactuurkop"),
          "typ": "key"
        },
        "name": {
          "dbs": "fin_verkoopfactuur_id",
          "label": L("lcl_fin_verkoopfactuur_id"),
          "typ": "varchar"
        },
        "invoicedate": {
          "dbs": "fin_verkoopfactuur_datum",
          "label": L("lcl_fin_verkoopfactuur_datum"),
          "typ": "datetime"  // date?
        },
        "fin_verkoopfactuur_xmlnode": {
          "dbs": "fin_verkoopfactuur_xmlnode",
          "label": L("lcl_fin_verkoopfactuur_xmlnode"),
          "typ": "varchar",
          LOV: "resevering;Reservering;bestelopdr;Bestelling;opdracht;Opdracht;contract;Contract"
        },
        "fin_verkoopfactuur_refkey": {
          "dbs": "fin_verkoopfactuur_refkey",
          "label": L("lcl_fin_verkoopfactuur_refkey"),
          "typ": "varchar",
          "filter": "exact"
        },
        "fin_verkoopfactuur_bedrag": {
          "dbs": "fin_verkoopfactuur_bedrag",
          "label": L("lcl_fin_verkoopfactuur_bedrag"),
          "iscurrency": true,
          "typ": "float",
          "total": true
        },
        "fin_verkoopfactuur_btw": {
          "dbs": "fin_verkoopfactuur_btw",
          "label": L("lcl_fin_verkoopfactuur_btw"),
          "iscurrency": true,
          "typ": "float",
          "total": true
        },
        "nrlines": {
          "dbs": "aantalregels",
          "label": L("lcl_nrfinlines"),
          "typ": "number"
        }
    };
    this.primary = "fin_verkoopfactuur_id";
    this.includes = { regels: { model: new model_fin_verkoopfactuurregels(),
                                joinfield: "head" } }
    this.list = {
              "columns": [
                  "name",
                  "invoicedate",
                  "fin_verkoopfactuur_bedrag",
                  "fin_verkoopfactuur_btw"
              ],
              default_url : "appl/fin/fin_verkoopfactuurkop.asp?mode=wrap&id="
            };
    this.search = {
      "filters": [
        "name",
        "fin_verkoopfactuur_xmlnode",
        "fin_verkoopfactuur_refkey"
        //"account"
      ]
    };
  this.autfunction = "WEB_VERFAC";
  this.record_title = L("lcl_verkoopfactuur"),
  this.records_title = L("lcl_verkoopfacturen");

  api2.generic_REST(this); // Alleen de GET
}

// Dit is het model voor alle factuurregels van een fin_verkoopfactuur_id
fin_verkoopfactuurkop = function()
{
    this.table = "fin_verkoopfactuurkop";
    this.fields = {
        "id": {
          "dbs": "fin_verkoopfactuurkop_key",
          "label": "Key",
          "typ": "key"
        },
        "name": {
          "dbs": "fin_verkoopfactuurkop_id",
          "label": L("lcl_fin_verkoopfactuur_id"),
          "typ": "varchar"
        }
    };
    this.primary = "fin_verkoopfactuurkop_key";
    this.includes = { regels: { model: new model_fin_verkoopfactuurregels(),
                                joinfield: "head" } }
    this.list = {
              "columns": [
                  "name"
              ]
            };
    this.search = {
      "filters": [
        "name"
      ]
    };
    this.print = {
          xmlnode: "verkoopfactuur",
          key: "id"
    };
  this.autfunction = "WEB_VERFAC";
  this.record_title = L("lcl_verkoopfactuur_verzamel"),
  this.records_title = L("lcl_verkoopfacturen_verzamel");

  // api2.generic_REST(this); geen edit en dergelijke
  this.REST_GET = generic_REST_GET(this); // Alleen de GET
}

%>