#ifndef SQLTABLE_H
#define SQLTABLE_H

#include <QString>
#include <QStringList>

const QString DBInfoCommand = "INSERT INTO DBINFO (VERSION, SUBVERSION) VALUES (:VERSION, :SUBVERSION);";


//--------------- BASE DE DATOS DE EMPRESAS, LISTADO ------------------------
const QString tEmpresas = "CREATE TABLE ENTERPRISES ("
        "NAME               VARCHAR (100) NOT NULL, "               // 00. Nombre
        "CIF                VARCHAR (20)  NOT NULL, "               // 01. Nombre
        "DBNAME             VARCHAR (100) NOT NULL, "               // 02. Nombre
        "PATH               VARCHAR (100) NOT NULL, "               // 03. Nombre
        "CREATEDAT          DATETIME DEFAULT (CURRENT_TIMESTAMP), " // 04. Nombre
        "CREATEDBY          VARCHAR (100), "                        // 05. Nombre
        "PRIMARY KEY (NAME, CIF)"
        ");";

//--------------- BASE DE DATOS DE USUARIOS ------------------------
const QString tDBUsers = "CREATE TABLE USERS ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "
        "NAME               VARCHAR(60), "                          // 01. Nombre
        "SURNAME            VARCHAR(60), "                          // 02. Apellidos
        "USERNAME           VARCHAR(60) NOT NULL UNIQUE, "          // 03. Forma
        "PASSWORD           VARCHAR(60), "                          // 04. Forma
        "USERTYPE           INTEGER, "                              // 05. Forma
        "PERMITS            VARCHAR(350), "                         // 06. Forma
        "LOCKED             BOOLEAN, "                              // 07. Forma
        "PICTURE            BLOB, "                                 // 08. Forma
        "CREATEDAT          DATETIME DEFAULT (CURRENT_TIMESTAMP),"  // 09.  Fecha de creación
        "CREATEDBY          VARCHAR(100)"
        ");";

//------------ informción básica de la databse -----------------------------
const QString tDBInfo = "CREATE TABLE DBINFO ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "
        "VERSION            VARCHAR(3) NOT NULL, "
        "SUBVERSION         VARCHAR(3) NOT NULL, "
        "CREATEDAT          DATETIME DEFAULT (CURRENT_TIMESTAMP)"   // 25. Fecha de creación
        ");";

//----------------------- INFORMACION DE LA EMPRESA -------------------------
const QString tEmpresaInfo = "CREATE TABLE ENTERPRISESINFO ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "    // 00.  ID
        "NAME               VARCHAR(100) NOT NULL, "                // 01.  Nombre de la empresa
        "CIF                VARCHAR(10) NOT NULL, "                 // 02.  CIF

        "ADDRESS            VARCHAR(40), "                          // 03.  Línea Dirección 1
        "POSTCODE           VARCHAR(10), "                          // 04.  Código postal
        "CITY               VARCHAR(80), "                          // 05.  Ciudad
        "PROVINCE           VARCHAR(80), "                          // 06.  Provincia
        "COUNTRY            VARCHAR(80), "                          // 07.  Pais

        "PHONE              VARCHAR(20), "                          // 08. Teléfono
        "MOBILE             VARCHAR(20), "                          // 09. Movil
        "FAX                VARCHAR(20), "                          // 10. Fax
        "EMAIL              VARCHAR(60), "                          // 11. e-mail
        "WEB                VARCHAR(60), "                          // 12. Web

        "CIF_COMMUNITY      VARCHAR(10), "                          // 13. CIF Comunitario
        "IAE                VARCHAR(10), "                          // 14. IAE
        "CNAE               VARCHAR(10), "                          // 15. CNAE
        "DCNAE              VARCHAR(200), "                         // 16. Descripción CNAE

        "LOGO1              BLOB, "                                 // 17. Logo1
        "LOGO2              BLOB, "                                 // 18. Logo2

        "CREATEDAT          DATETIME DEFAULT (CURRENT_TIMESTAMP), " // 19. Fecha de creación
        "CREATEDBY          VARCHAR(100)"
        ");";

//----------------------- THIRD -------------------------------------------
const QString tThird = "CREATE TABLE THIRD ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "    // 00. ROW ID

        "FORM               VARCHAR(25), "                          // 01. Forma
        "CIF                VARCHAR(20), "                          // 02. CIF
        "NAME               VARCHAR(128) NOT NULL, "                // 03. Nombre del cliente
        "NICKNAME           VARCHAR(128), "                         // 04. Nombre del cliente
        "FAMILY             VARCHAR(25), "                          // 05. Familia de clientes
        "INTRA_FC           VARCHAR(20), "                          // 06. Intracommunitary fiscal code
        "STATE              INT NOT NULL,"                          // 07. Estado

        "CLIENT_STATE       INT NOT NULL, "                         // 08. intracommunitary fiscal code
        "CLIENT_CODE        VARCHAR(20), "                          // 09. intracommunitary fiscal code
        "CLIENT_ACCOUNT     VARCHAR (24), "                         // 10. intracommunitary fiscal code

        "SUPPLIER_STATE     INT NOT NULL, "                         // 11. intracommunitary fiscal code
        "SUPPLIER_CODE      VARCHAR(20), "                          // 12. Code
        "SUPPLIER_ACCOUNT   VARCHAR (24), "                         // 13. intracommunitary fiscal code

        // Dirección del cliente:
        "ADDRESS            VARCHAR(40), "                          // 14. Línea Dirección 1
        "POSTCODE           VARCHAR(9), "                           // 15. Código postal
        "CITY               VARCHAR(80), "                          // 16. Ciudad
        "PROVINCE           VARCHAR(80), "                          // 17. Provincia
        "COUNTRY_ID         VARCHAR(2), "                           // 18. Diminutivo del pais

        "PHONE              VARCHAR(20), "                          // 19. Teléfono
        "MOBILE             VARCHAR(20), "                          // 20. Movil
        "FAX                VARCHAR(20), "                          // 21. Fax
        "EMAIL              VARCHAR(60), "                          // 22. e-mail
        "WEBSIDE            VARCHAR(60), "                          // 23. Web

        "PAYMENT_METHOD     VARCHAR(40), "                          // 24. Forma de Pago
        "PAYMENT_TYPE       VARCHAR(40), "                          // 25. Forma de Pago

        "LOGO               BLOB, "                                 // 26. Imagen
        "NOTE_PUBLIC        TEXT, "                                 // 27. intracommunitary fiscal code
        "NOTE_PRIVATE       TEXT, "                                 // 28. intracommunitary fiscal code

        "UPDATEDAT DATE DEFAULT CURRENT_DATE, "                     // 29. Fecha de creación
        "CREATEDAT DATE DEFAULT CURRENT_DATE, "                     // 30. Fecha de creación
        "CREATEDBY VARCHAR(100) "                                   // 31. intracommunitary fiscal code

        ");";

//----------------------- ELEMENTO ------------------------------------------
const QString tElemento = "CREATE TABLE ELEMENT ("
        "CODE               VARCHAR(20) UNIQUE PRIMARY KEY, "       // 00. Code
        "TYPE1              VARCHAR(2) NOT NULL, "                  // 01. Tipo
        "TYPE2              VARCHAR(2) NOT NULL, "                  // 02. Tipo
        "TITLE              VARCHAR(100) NOT NULL, "                // 03. Resumen
        "DESCRIPTION        BLOB, "                                 // 04. Descripción
        "FAMILY_ID          VARCHAR(9), "                           // 05. ID de Familia
        "UNIT_ID            VARCHAR(9), "                           // 06. ID de Unidad

        "DATE_UPDATE        DATE DEFAULT CURRENT_DATE, "            // 07. Fecha de la última modificación
        "REAL_PRICE         FLOAT, "                                // 08. PVP de compra
        "DISCOUNT           FLOAT, "                                // 09. Descuento frente a PVP
        "PURCHASE_PRICE     FLOAT, "                                // 10. Precio de compra
        "BENEFIT            FLOAT, "                                // 11. Beneficio respecto al PC
        "TAX                FLOAT, "                                // 12. IVA
        "SALE_PRICE         FLOAT, "                                // 13. Precio de venta

        "BARCODE            VARCHAR(20), "                          // 14. Código de Barras
        "IMAGE              BLOB, "                                 // 15. Imagen
        "STATE              BOOLEAN DEFAULT TRUE, "                 // 16. Elemento inactivo

        "MANUFACTURER       VARCHAR(40), "                          // 17. Fabricante o marca
        "GAMMA              VARCHAR(40), "                          // 18. Gama

        // Tamaño:
        "WEIGHT             FLOAT, "                                // 19. ID proveedor por defecto
        "HEIGHT             FLOAT, "                                // 20. ID proveedor por defecto
        "WIDTH              FLOAT, "                                // 21. ID proveedor por defecto
        "LENGHT             FLOAT, "                                // 22. ID proveedor por defecto

        "SUPPLIER_DEFAULT VARCHAR(10), "                            // 98. CODE proveedor por defecto

        "CREATEDAT DATE DEFAULT CURRENT_DATE, "                     // 25. Fecha de creación
        "CREATEDBY VARCHAR(100)"

        ");";

//------------ COMPOSICIÓN DE UNIDADES DE OBRA ------------------------------
const QString tElemComp = "CREATE TABLE ELEMENTCOMPOSITION ("
        "ID                 INTEGER,"                               // 00. Número de línea
        "CODE               VARCHAR(20) NOT NULL, "                 // 01. ID de la Unidad de obra
        "ELEMENT_CODE       VARCHAR(20) NOT NULL, "                 // 02. ID del elemento
        "ELEMENT_AMOUNT     FLOAT, "                                // 03. Cantidad del elemento

        "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 04. Fecha de su creación
        "CREATEDBY          VARCHAR (100),"                         // 05. Fecha de su creación

        "PRIMARY KEY(ID, CODE, ELEMENT_CODE));";

//------------ PROVEEDOR DEL ELEMENTO -------------------------------------------
const QString tSupplier = "CREATE TABLE Supplier ("
        "ELEMENT_CODE       VARCHAR(20) NOT NULL, "                 // 00. Code del elemento

        "THIRD_CODE         VARCHAR(20) NOT NULL, "                 // 01. Code del proveedor
        "THIRD_NAME         VARCHAR(60), "                          // 03. Nombre del proveedor

        "REFERENCE          VARCHAR(20), "                          // 04. Ref. del elemento que tiene el proveedor
        "REAL_PRICE         FLOAT, "                                // 05. PVP
        "DISCOUNT           FLOAT, "                                // 06. Descuento
        "PURCHASE_PRICE     FLOAT, "                                // 07. Precio compra
        "MINIMUM_AMOUNT     FLOAT, "                                // 08. Cantidad mínima de pedido
        "DATE_UPDATE        DATE, "                                 // 09. Fecha de actualización del precio

        "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 10. Fecha de creación
        "CREATEDBY          VARCHAR(100), "

        "PRIMARY KEY(ELEMENT_CODE, THIRD_CODE)"
        ");";

//----------------------- FORMAS -------------------------------------------
const QString tForma = "CREATE TABLE FORM ("
        "ID                 VARCHAR(10) NOT NULL UNIQUE, "          // 00. Abreviación de la forma
        "DESCRIPTION        VARCHAR(60) NOT NULL, "                 // 01. Descripción más amplia
        "PRIMARY KEY(ID));";

  //----------------------- FAMILIAS DE PROVEEDORES ---------------------------
const QString tFamProv = "CREATE TABLE SUPPLIERFAMILIES ("
        "ID                 VARCHAR(10) NOT NULL UNIQUE, "          // 00. Abreviatura de la familia
        "DESCRIPTION        VARCHAR(60) NOT NULL, "                 // 01. Descripción
        "PRIMARY KEY(ID));";

  //----------------------- FAMILIAS DE CLIENTES -----------------------------
const QString tFamCli = "CREATE TABLE CUSTOMERFAMILIES ("
        "ID                 VARCHAR(10) NOT NULL UNIQUE, "          // 00. Code del elemento
        "DESCRIPTION        VARCHAR(60) NOT NULL, "                 // 00. Code del elemento
        "PRIMARY KEY(ID));";

  //----------------------- FAMILIAS DE ELEMENTOS ----------------------------
const QString tFamEle = "CREATE TABLE ELEMENTFAMILIES ("
        "ID                 VARCHAR(10) NOT NULL UNIQUE,"           // 00. Code del elemento
        "DESCRIPTION        VARCHAR(60) NOT NULL, "                 // 00. Code del elemento
        "PRIMARY KEY(ID));";

  //----------------------- UNIDADES ------------------------------------------
const QString tUnidad = "CREATE TABLE UNIT ("
        "ID                 VARCHAR(10) NOT NULL UNIQUE,"           // 00. Code del elemento
        "DESCRIPTION        VARCHAR(60) NOT NULL, "                 // 00. Code del elemento
        "PRIMARY KEY(ID));";

//---------------------- DOCUMENTOS DE VENTA - PROPUESTAS --------------------------------
const QString tPropuestaVenta = "CREATE TABLE SALEPROPOSAL ("
      "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "    // 0.  ID
      "TYPE               VARCHAR(2) NOT NULL, "                  // 1.  Tipo de documento: PR - Presu, FA - Factura,
      "CODE               VARCHAR(20) NOT NULL UNIQUE, "          // 2.  ID documento
      "TITLE              VARCHAR(100) NOT NULL, "                // 3.  Nombre documento
      "VERSION            INTEGER, "                              // 6.  Nombre proveedor

      "CUSTOMER_CODE      VARCHAR(20) NOT NULL, "                 // 4.  ID cliente
      "CUSTOMER_NAME      VARCHAR(100) NOT NULL, "                // 5.  Nombre cliente                ??
      "PROJECT_CODE       VARCHAR(20), "                          // 6.  ID del proyecto
      "PROJECT_TITLE      VARCHAR(100), "                         // 6.  Nombre proveedor                ??

      "COST               DOUBLE, "                               // 10. Precio total Compra
      "PRICE              DOUBLE, "                               // 11. Precio total Venta sin iva
      "TAX                INTEGER, "                              // 12. IVA
      "STATE              VARCHAR(10), "                          // 13. Estado
      "STATE_NUMBER       INTEGER, "                              // 14. Número del estado

      "DESCRIPTION        BLOB, "                                 // 4.  Descripción

      "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 7.  Fecha creación
      "VALIDUNTILL        DATE DEFAULT CURRENT_DATE, "            // 8.  Valido hasta la fecha
      "DELIVERY_DATE      DATE DEFAULT CURRENT_DATE, "            // 9.  Fecha de expedición
      "CREATEDBY          VARCHAR(100)"
      ");";

const QString tDataPropuestaVenta = "CREATE TABLE SALEPROPOSALDATA ("
      "ID                 INTEGER NOT NULL, "                     // 0.  Número de la línea
      "SALEDOCUMENT_CODE  VARCHAR(20) NOT NULL, "                 // 1.  ID Documento de compra
      "VERSION            INTEGER, "                              // 6.  Nombre proveedor

      "NODEINDEX          VARCHAR(10), "                          // 2.  Indice
      "ELEMENT_CODE       VARCHAR(20), "                          // 3.  ID del elemento
      "ELEMENT_TYPE       VARCHAR(2), "                           // 4.  Tipo de elemento
      "ELEMENT_INDEX      INTEGER, "                              // 5.  Indice del elemento
      "ELEMENT_TITLE      VARCHAR(100), "                         // 6.  Título del elemento
      "ELEMENT_DESCRIPTION    BLOB, "                             // 7.  Descripción del elemento
      "ELEMENT_UNIT_AMOUNT    FLOAT, "                            // 8.  Cantidad unitaria del elemento
      "ELEMENT_TOTAL_AMOUNT   FLOAT, "                            // 9.  Cantidad total
      "ELEMENT_UNIT           VARCHAR(2), "                       // 10.  ID de la unidad
      "ELEMENT_PRICE      FLOAT, "                                // 11. Precio del elemento

      "BENEFIT            FLOAT, "                                // 12. Beneficio
      "DISCOUNT           FLOAT, "                                // 13. Descuento

      "TAX                FLOAT, "                                // 13. Descuento
      "PRINT              BOOLEAN       DEFAULT (TRUE),"          // 13. Descuento

      "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 14. Fecha de creación
      "CREATEDBY          VARCHAR(100), "

      "PRIMARY KEY(ID, SALEDOCUMENT_CODE));";

  //---------------------- DOCUMENTOS DE VENTA --------------------------------
const QString tDocVenta = "CREATE TABLE SALEDOCUMENT ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "    // 0.  ID
        "TYPE               VARCHAR(2) NOT NULL, "                  // 1.  Tipo de documento: PR - Presu, FA - Factura,
        "CODE               VARCHAR(20) NOT NULL UNIQUE, "          // 2.  ID documento
        "TITLE              VARCHAR(100) NOT NULL, "                // 3.  Nombre documento
        "VERSION            INTEGER, "                              // 6.  Nombre proveedor

        "CUSTOMER_CODE      VARCHAR(20) NOT NULL, "                 // 4.  ID cliente
        "CUSTOMER_NAME      VARCHAR(100) NOT NULL, "                // 5.  Nombre cliente                ??
        "PROJECT_CODE       VARCHAR(20), "                          // 6.  ID del proyecto
        "PROJECT_TITLE      VARCHAR(100), "                         // 6.  Nombre proveedor                ??

        "COST               DOUBLE, "                               // 10. Precio total Compra
        "PRICE              DOUBLE, "                               // 11. Precio total Venta sin iva
        "TAX                INTEGER, "                              // 12. IVA
        "STATE              VARCHAR(10), "                          // 13. Estado
        "STATE_NUMBER       INTEGER, "                              // 14. Número del estado

        "DESCRIPTION        BLOB, "                                 // 4.  Descripción

        "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 7.  Fecha creación
        "VALIDUNTILL            DATE DEFAULT CURRENT_DATE, "            // 8.  Valido hasta la fecha
        "DELIVERY_DATE      DATE DEFAULT CURRENT_DATE, "            // 9.  Fecha de expedición
        "CREATEDBY          VARCHAR(100)"
        ");";

const QString tDataDocVenta = "CREATE TABLE SALEDOCUMENTDATA ("
        "ID                 INTEGER NOT NULL, "                     // 0.  Número de la línea
        "SALEDOCUMENT_CODE  VARCHAR(20) NOT NULL, "                 // 1.  ID Documento de compra
        "VERSION            INTEGER, "                              // 6.  Nombre proveedor

        "NODEINDEX          VARCHAR(10), "                          // 2.  Indice
        "ELEMENT_CODE       VARCHAR(20), "                          // 3.  ID del elemento
        "ELEMENT_TYPE       VARCHAR(2), "                           // 4.  Tipo de elemento
        "ELEMENT_INDEX      INTEGER, "                              // 5.  Indice del elemento
        "ELEMENT_TITLE      VARCHAR(100), "                         // 6.  Título del elemento
        "ELEMENT_DESCRIPTION    BLOB, "                             // 7.  Descripción del elemento
        "ELEMENT_UNIT_AMOUNT    FLOAT, "                            // 8.  Cantidad unitaria del elemento
        "ELEMENT_TOTAL_AMOUNT   FLOAT, "                            // 9.  Cantidad total
        "ELEMENT_UNIT           VARCHAR(2), "                       // 10.  ID de la unidad
        "ELEMENT_PRICE      FLOAT, "                                // 11. Precio del elemento

        "BENEFIT            FLOAT, "                                // 12. Beneficio
        "DISCOUNT           FLOAT, "                                // 13. Descuento

        "CREATEDAT          DATE DEFAULT CURRENT_DATE, "            // 14. Fecha de creación
        "CREATEDBY          VARCHAR(100), "

        "PRIMARY KEY(ID, SALEDOCUMENT_CODE));";

  //---------------------- DOCUMENTOS DE COMPRA --------------------------------
const QString tDocCompra = "CREATE TABLE BUYDOCUMENT ("
        "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "       // 0.  ID
        "TYPE               VARCHAR(2)\tNOT NULL, "                  // 1.  Tipo de documento:
        "CODE               VARCHAR(20) NOT NULL, "                  // 2.  Código documento
        "SUPPLIER_CODE      VARCHAR(20) NOT NULL, "                  // 3.  Código proveedor
        "SUPPLIER_NAME      VARCHAR(100) NOT NULL, "                  // 4.  Nombre proveedor
        "PROJECT_CODE       VARCHAR(20), "                           // 5.  ID del proyecto
        "PROJECT_NAME       VARCHAR(100), "                           // 6.  Referecia del proveedor(en caso de albarán o factura)

        "REFERENCE          VARCHAR(50), "                           // 6.  Referecia del proveedor(en caso de albarán o factura)

        "CREATEDAT          DATE DEFAULT CURRENT_DATE, "           // 7.  Fecha creación
        "VALIDUNTILL            DATE DEFAULT CURRENT_DATE, "           // 8.  Fecha de entrega

        "PRICE              DOUBLE, "                            // 9.  Precio total Compra
        //"dcPVP              DOUBLE, "                            // 10. Precio total Compra sin iva
        "TAX                INTEGER, "                              // 11. IVA

        "DESCRIPTION        BLOB, "   // 4.  Descripción
        "CREATEDBY          VARCHAR(100) "
        ");";

const QString tDataDocCompra = "CREATE TABLE BUYDOCUMENTDATA ("
        "ID                 INTEGER NOT NULL, "                             // 0.  ID linea
        "BUYDOCUMENT_CODE\tVARCHAR(10)\tNOT NULL, "             // 1.  ID Documento de compra
        "ELEMENT_CODE       VARCHAR(20), "                          // 2.  ID del elemento
        "ELEMENT_SUPPLIER_CODE  VARCHAR(20), "                 // 3.  ID del elemento que tiene el proveedor
        "ELEMENT_NAME       VARCHAR(100), "                          // 4.  Descripción del elemento
        "ELEMENT_MANUFACTURER   VARCHAR(40), "                  // 5.  Fabricante
        "ELEMENT_AMOUNT     FLOAT, "                              // 6.  Cantidad
        "ELEMENT_UNIT       VARCHAR(2), "                           // 7.  ID de la unidad
        "ELEMENT_REAL_PRICE FLOAT, "                          // 8.  PVP de compra del elemento
        "ELEMENT_DISCOUNT   FLOAT, "                            // 9.  Descuento
        "ELEMENT_PURCHASE_PRICE FLOAT, "                      // 10. Precio de Compra del elemento
        "DELIVERY_DATE DATE, "                                // 11. Fecha de Entrega del elemento

        "CREATEDAT DATE DEFAULT CURRENT_DATE, "           // 14. Fecha de creación
        "CREATEDBY VARCHAR(100), "

        "PRIMARY KEY(ID, BUYDOCUMENT_CODE));";

  //----------------------- PROYECTO -----------------------------------------
const QString tProyecto = "CREATE TABLE PROJECT ("
    "ID\tINTEGER PRIMARY KEY AUTOINCREMENT, "           // 0.  ID
    "CODE\tVARCHAR(20) NOT NULL, "                      // 1.  ID
    "TITLE\tVARCHAR(100) NOT NULL, "                   // 2.  Título
    "CUSTOMER_CODE\tVARCHAR(10) NOT NULL, "            // 3.  ID Cliente
    "CUSTOMER_NAME\tVARCHAR(60) NOT NULL, "            // 4.  Nombre del cliente
    "START_DATE\tDATE DEFAULT CURRENT_DATE, "           // 5.  Fecha de Inicio
    "DURATION\tDATE, "                                  // 6.  Fecha de Inicio
    "STATE\tVARCHAR(10), "                             // 7.  Estado

    // Dirección de la obra
    "CONTACT\tVARCHAR(60), "                           // 8.  Contacto
    "ADDRESS1\tVARCHAR(40), "                           // 9.  Dir L1
    "ADDRESS2\tVARCHAR(40), "                           // 10.  Dir L2
    "POSTCODE\tVARCHAR(9), "                            // 11. CP
    "CITY\tVARCHAR(80), "                               // 12. Ciudad
    "PHONE\tVARCHAR(20), "                             // 13. Telefono
    "MOBILE\tVARCHAR(20), "                             // 14. Movil
    "EMAIL\tVARCHAR(60), "                             // 15. e-mail

    "pyGantt BLOB"                                     // 16. Imagen

    "CREATEDAT DATE DEFAULT CURRENT_DATE, "    // 25. Fecha de creación
    "CREATEDBY VARCHAR(100)"
    ");";

const QString tProjectControl = "CREATE TABLE PROJECTCONTROL ("
    "ID\tINTEGER PRIMARY KEY AUTOINCREMENT, "           // 01.  ID
    "pcPYCODE\tVARCHAR(20) NOT NULL, "                  // 02.  ID
    "pcELID\tVARCHAR(20) NOT NULL, "                    // 03.  ID
    "pcELTITLE VARCHAR(100) NOT NULL, "                // 04.  ID Cliente
    "pcELTOTAL\tFLOAT, "                               // 05.  Nombre del cliente
    "pcELINSTALLED FLOAT, "                            // 06.  Fecha de Inicio
    "pcELREST\tFLOAT, "                                 // 07.  Fecha de Inicio
    "pcELUNIT\tVARCHAR(2), "                            // 08.  Estado
    "pcELDATE\tDATE DEFAULT CURRENT_DATE, "             // 09.  Estado
    "pcELTYPE VARCHAR(3), "
    "pcELNODEINDEX INTEGER, "
    "pcTASK VARCHAR(50), "

    "pcCREATEDBY VARCHAR(100), "
    "CREATEDAT DATETIME DEFAULT CURRENT_DATE"
    ");";

//----------------------- PROJECTDOCUMENT ------------------------------------
const QString tProjectDocument = "CREATE TABLE PROJECTDOCUMENT ("
    "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "
    "PROJECT_CODE       VARCHAR(20) NOT NULL, "
    "DOC_TYPE           VARCHAR(2) NOT NULL, "
    "DOC_CODE           VARCHAR(20) NOT NULL, "
    "CREATEDBY          VARCHAR(100), "
    "CREATEDAT          DATETIME DEFAULT CURRENT_TIMESTAMP"
    ");";

//----------------------- PROJECTBUDGET --------------------------------------
const QString tProjectBudget = "CREATE TABLE PROJECTBUDGET ("
    "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "
    "PROJECT_CODE       VARCHAR(20) NOT NULL, "
    "CONCEPT            VARCHAR(200), "
    "AMOUNT             FLOAT, "
    "CREATEDBY          VARCHAR(100), "
    "CREATEDAT          DATETIME DEFAULT CURRENT_TIMESTAMP"
    ");";

  //----------------------- TRABAJADOR ---------------------------------------
const QString tTrabajador = "CREATE TABLE EMPLOYEE ("
    "ID INTEGER PRIMARY KEY AUTOINCREMENT, "           // 01. ID
    "SURNAME VARCHAR(60) NOT NULL, "                   // 02. Apellidos
    "NAME VARCHAR(60) NOT NULL, "                      // 03. Nombre
    "STATE\tBOOLEAN\tDEFAULT FALSE, "                   // 04. Activo o inactivo
    "CATEGORY VARCHAR(30), "                           // 05. Categoría
    "PRICEPERHOUR\tFLOAT, "                             // 06. Precio Hora
    "NOTES BLOB,"                                      // 07. Notas
    "PICTURE BLOB,"

    "CREATEDAT DATE DEFAULT CURRENT_DATE, "    // 25. Fecha de creación
    "CREATEDBY VARCHAR(100)"
    ");";

  //----------------------- CONTACTOS -----------------------------------------
const QString tContact = "CREATE TABLE CONTACT ("
    "coID\tINTEGER PRIMARY KEY AUTOINCREMENT, "         // 01. ID
    "coCode\tVARCHAR(20) NOT NULL, "                    // 02. Code
    "coNombre\tVARCHAR(60) NOT NULL, "                  // 03. Nombre
    "coApellido\tVARCHAR(60) NOT NULL, "                // 04. Apellidos
    "coForma\tVARCHAR(10), "                           // 05. Forma

    "coPuesto\tVARCHAR(20), "                           // 06. Puesto
    "coclCode\tVARCHAR(20), "                           // 07. Código Empresa
    "coclNom VARCHAR(100), "                            // 08. Nombre Empresa
    "coTel\tVARCHAR(20), "                             // 09. Teléfono fijo
    "coMovil\tVARCHAR(20), "                           // 10. Teléfono móvil
    "coFax\tVARCHAR(20), "                             // 11. Fax
    "coEMail\tVARCHAR(60),"                            // 12. e-mail
    "coImage BLOB,"                                    // 13. Imagen

    "CREATEDAT DATE DEFAULT CURRENT_DATE, "    // 25. Fecha de creación
    "CREATEDBY VARCHAR(100)"
    ");";



//----------------------- TEMPLATE -----------------------------------------
const QString tTemplate = "CREATE TABLE TEMPLATE ("
    "ID                 INTEGER PRIMARY KEY AUTOINCREMENT, "
    "NAME               VARCHAR(100) NOT NULL, "
    "DESCRIPTION        VARCHAR(500), "
    "DOCUMENT_TYPE      VARCHAR(20) NOT NULL, "
    "WIDTH_MM           FLOAT DEFAULT 210, "
    "HEIGHT_MM          FLOAT DEFAULT 297, "
    "MARGIN_TOP         FLOAT DEFAULT 20, "
    "MARGIN_BOTTOM      FLOAT DEFAULT 20, "
    "MARGIN_LEFT        FLOAT DEFAULT 20, "
    "MARGIN_RIGHT       FLOAT DEFAULT 20, "
    "CONTENT            TEXT, "
    "IS_DEFAULT         BOOLEAN DEFAULT 0, "
    "CREATEDBY          VARCHAR(100), "
    "CREATEDAT          DATETIME DEFAULT CURRENT_TIMESTAMP, "
    "UPDATEDAT          DATETIME DEFAULT CURRENT_TIMESTAMP"
    ");";

const QStringList dbTables = {tDBInfo, tEmpresaInfo, tThird, tElemento, tElemComp, tUnidad, tPropuestaVenta, tDataPropuestaVenta,
    tDocVenta, tDataDocVenta, tDocCompra, tDataDocCompra, tContact, tTemplate, tProjectDocument, tProjectBudget};

const QStringList dbTableNames = {"DBINFO", "ENTERPRISESINFO", "THIRD", "ELEMENT", "ELEMENTCOMPOSITION", "UNIT", "SALEPROPOSAL", "SALEPROPOSALDATA",
    "SALEDOCUMENT", "SALEDOCUMENTDATA", "BUYDOCUMENT", "BUYDOCUMENTDATA", "CONTACT", "TEMPLATE", "PROJECTDOCUMENT", "PROJECTBUDGET"};

#endif // SQLTABLE_H