CREATE DATABASE tpv;

-- -----------------------------------------------------
-- Table `commerk`.`usuario`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS usuario (
  id_usuario SERIAL PRIMARY KEY,
  password VARCHAR(255) NOT NULL,
  nombre_usuario VARCHAR(45) NOT NULL,
  apellidos_usuario VARCHAR(45) NOT NULL,
  googleid VARCHAR(255),
  useremail VARCHAR(255),
  userimg VARCHAR(255),
  username VARCHAR(255),
  telefono_usuario BIGINT NOT NULL,
  documento_usuario BIGINT NOT NULL,
  rol VARCHAR(255) DEFAULT 'usuario' NOT NULL;
  tipo_usuario_id_tipo_usuario INT NOT NULL,
  proyecto_id_proyecto INT NOT NULL,
  estado_usuario BOOLEAN NOT NULL
);

ALTER TABLE usuario
ADD CONSTRAINT fk_proyecto
FOREIGN KEY (proyecto_id_proyecto) 
REFERENCES proyecto(id_proyecto);

ALTER TABLE usuario
ADD CONSTRAINT fk_tipo_usuario
FOREIGN KEY (tipo_usuario_id_tipo_usuario)
REFERENCES tipo_usuario(id_tipo_usuario);
  -- Agregar clave foránea para la tabla proyecto

CREATE TABLE IF NOT EXISTS tipo_usuario (
  id_tipo_usuario SERIAL PRIMARY KEY,
  tipo_usuario VARCHAR(45) NOT NULL
);

CREATE TABLE IF NOT EXISTS proyecto (
  id_proyecto SERIAL PRIMARY KEY,
  nombre_proyecto VARCHAR(255) NOT NULL,
  descripcion_proyecto VARCHAR(255) NOT NULL,
  estado_proyecto BOOLEAN NOT NULL
);

UPDATE usuario
SET rol = 'adminSistemas'
WHERE id_usuario IN (3, 4, 3);

SET TIME ZONE 'America/Bogota';

CREATE TABLE cliente_tpv (
    CardCode VARCHAR(255),
    CardName VARCHAR(255),
    CardForeignName VARCHAR(255),
    CardType CHAR(1),
    GroupCode INT,
    Phone1 VARCHAR(255),
    Cellular VARCHAR(255),
    U_HBT_RegTrib CHAR(2),
    U_HBT_TipDoc CHAR(2),
    ZipCode VARCHAR(255),
    PayTermsGrpCode VARCHAR(255),
    FederalTaxID VARCHAR(255),
    SalesPersonCode VARCHAR(255),
    City VARCHAR(255),
    EmailAddress VARCHAR(255),
    AdditionalID VARCHAR(255),
    ProjectCode VARCHAR(255),
    BilltoDefault VARCHAR(255),
    U_HBT_Nombres VARCHAR(255),
    U_HBT_Apellido1 VARCHAR(255),
    U_HBT_Apellido2 VARCHAR(255),
    U_HBT_TipEnt CHAR(1),
    U_HBT_MunMed VARCHAR(255),
    U_HBT_MailRecep_FE VARCHAR(255),
    U_Genero CHAR(1),
    U_FechaNacimiento VARCHAR(255),
    PriceListNum CHAR(1),
    U_GSP_SENDTPV CHAR(1),
    U_HBT_MedPag CHAR(2),
    Industry CHAR(1),
    Territory VARCHAR(255),
    U_HBT_ActEco VARCHAR(255),
    U_HBT_RegFis VARCHAR(255),
    U_HBT_Nacional CHAR(1),
    U_HBT_TipExt CHAR(1),
    U_HBT_Residente CHAR(2),
    U_HBT_InfoTrib CHAR(2),
    PRIMARY KEY (CardCode)
);

CREATE TABLE BPAddresses (
    CardCode VARCHAR(255),
    AddressName VARCHAR(255),
    Street VARCHAR(255),
    AddressType CHAR(9),
    ZipCode VARCHAR(255),
    City VARCHAR(255),
    Country CHAR(2),
    State VARCHAR(255),
    U_HBT_MunMed VARCHAR(255),
    U_HBT_DirMM CHAR(1),
    FOREIGN KEY (CardCode) REFERENCES cliente_tpv(CardCode)
);

CREATE TABLE BPPaymentMethods (
    CardCode VARCHAR(255),
    PaymentMethodCode VARCHAR(255),
    RowNumber INT,
    FOREIGN KEY (CardCode) REFERENCES cliente_tpv(CardCode)
);