CREATE TABLE COMPROBANTES_CABEZA (
    NRO_COMPROBANTE_CABEZA INTEGER NOT NULL,
    NRO_ALUMNO INTEGER NOT NULL,
    NRO_TIPO_COMPROBANTE INTEGER NOT NULL,
    CODIGO_COMPROBANTE_AFIP INTEGER NOT NULL, 
    NRO_PUNTO_VENTA INTEGER NOT NULL, 
    NRO_COMPROBANTE INTEGER NOT NULL,
    FECHA_VENCIMIENTO DATE,
    FECHA DATE NOT NULL, 
    FECHA_ING TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    GRAVADO NUMERIC(10,2) DEFAULT 0 NOT NULL,
    EXENTO NUMERIC(10,2) DEFAULT 0 NOT NULL,
    IVA NUMERIC(10,2) DEFAULT 0 NOT NULL,
    DESCUENTO NUMERIC(10,2) DEFAULT 0 NOT NULL,
    COMPROBANTE VARCHAR(20) CHARACTER SET ISO8859_1 NOT NULL COLLATE ES_ES,
    NOTA VARCHAR(300) CHARACTER SET ISO8859_1 COLLATE ES_ES,
    CAE VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES,
    FECHA_VENCIMIENTO_CAE DATE, 
    DATOS_QR VARCHAR(1000) CHARACTER SET ISO8859_1 COLLATE ES_ES,
    NRO_NOTA_CREDITO INTEGER
);

-----
ALTER TABLE COMPROBANTES_CABEZA ADD CONSTRAINT PK_COMPROBANTES_CABEZA PRIMARY KEY (NRO_COMPROBANTE_CABEZA);
-----
ALTER TABLE COMPROBANTES_CABEZA ADD CONSTRAINT FK_ALUMNO FOREIGN KEY (NRO_ALUMNO) REFERENCES ALUMNOS (NRO_ALUMNO);
-----
CREATE INDEX IDX_COMPROBANTES_CABEZA ON COMPROBANTES_CABEZA (FECHA);
-----
CREATE INDEX IDX_COMPROBANTES_CABEZA1 ON COMPROBANTES_CABEZA (COMPROBANTE);
-----
CREATE TRIGGER COMPROBANTES_CABEZA_BI FOR COMPROBANTES_CABEZA
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.NRO_COMPROBANTE_CABEZA IS NULL) THEN BEGIN
    NEW.NRO_COMPROBANTE_CABEZA = GEN_ID(ORDEN_GEN, 1);
  END
  IF (NEW.NRO_COMPROBANTE <> -1) THEN BEGIN
    NEW.COMPROBANTE =
      CASE
        WHEN NEW.NRO_TIPO_COMPROBANTE = 1 THEN 'F'
        WHEN NEW.NRO_TIPO_COMPROBANTE = 2 THEN 'C'
      ELSE
        'X'
      END || 'C-' || LPAD(NEW.NRO_PUNTO_VENTA, 5, '0') || '-' || LPAD(NEW.NRO_COMPROBANTE, 8, '0');
  
  END
END;
-----
CREATE OR ALTER TRIGGER COMPROBANTES_CABEZA_BU FOR COMPROBANTES_CABEZA
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
  IF (NEW.NRO_COMPROBANTE <> -1) THEN BEGIN
    NEW.COMPROBANTE =
      CASE
        WHEN NEW.NRO_TIPO_COMPROBANTE = 1 THEN 'F'
        WHEN NEW.NRO_TIPO_COMPROBANTE = 2 THEN 'C'
      ELSE
        'X'
      END || 'C-' || LPAD(NEW.NRO_PUNTO_VENTA, 5, '0') || '-' || LPAD(NEW.NRO_COMPROBANTE, 8, '0');
  
  END

END;

