/*
Script generated by Aqua Data Studio 4.7.2 on may-06-2011 02:52:38 PM
Database: websafiERP
Schema: WS_CONTAB
Objects: VIEW
*/
DROP VIEW WS_CONTAB.CN_TIP_COM_FECHA;
DROP VIEW WS_CONTAB.CN_SUBC_DIGITOS_AUX;
DROP VIEW WS_CONTAB.CN_SUBC_DIGITOS;
DROP VIEW WS_CONTAB.CN_SUBC_AUX_TER;
DROP VIEW WS_CONTAB.CN_SALDO_VIGPER;
DROP VIEW WS_CONTAB.CN_SALDO_SIN_CONSOL;
DROP VIEW WS_CONTAB.CN_SALDO_DEB_SIN_ANT;
DROP VIEW WS_CONTAB.CN_SALDO_CRE_SIN_ANT;
DROP VIEW WS_CONTAB.CN_MOV_AUX_TER;
DROP VIEW WS_CONTAB.CN_MOVIMIENTO_VIGPER;
DROP VIEW WS_CONTAB.CN_MOVIMIENTO_AUX;
DROP VIEW WS_CONTAB.CN_LIBRO_MAYOR_CONSOL;
DROP VIEW WS_CONTAB.CN_LIBRO_MAYOR;
DROP VIEW WS_CONTAB.CN_LIBRO_DIARIO_OF;
DROP VIEW WS_CONTAB.CN_LIBRO_AUX;
DROP VIEW WS_CONTAB.CN_DOCUMENTO_TOT;
DROP VIEW WS_CONTAB.CN_DIGITOS_CUENTAS;
DROP VIEW WS_CONTAB.CN_CONTROL_CAD_NUM_MOV;
DROP VIEW WS_CONTAB.CN_CATALOGO_DIGITOS;
DROP VIEW WS_CONTAB.CN_BALANCE_DETALLADO;
DROP VIEW WS_CONTAB.CN_BALANCE_CONSOL;
DROP VIEW WS_CONTAB.CN_AUX_SUBC_TER;
DROP VIEW WS_CONTAB.CN_AUX_SUBC;

CREATE VIEW WS_CONTAB.CN_AUX_SUBC ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, TIPO_SALDO, DEBITO, CREDITO, SALDO )
AS
select 
VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CATALOGO,
ID_CUENTA_MAYOR,
ID_GRUPO_CUENTA,
ID_CLASE_CUENTA,
TIPO_SALDO,   

/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

SALDO 

from
(
select 
 /**Llave de la vista*/
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA,
NULL  AS TIPO_SALDO,
sum(sal.DEBITO) AS DEBITO,
sum(sal.CREDITO) AS CREDITO,
NULL AS SALDO
from CN_SALDO_VIGPER sal

JOIN CN_CONTROL_CAD cad
on sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

GROUP BY
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
VIG_PER;
CREATE VIEW WS_CONTAB.CN_AUX_SUBC_TER ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_MAE_TER, ID_AUXILIAR, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, TIPO_SALDO, DEBITO, CREDITO, SALDO )
AS
select 
VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_MAE_TER,
ID_AUXILIAR,
ID_CATALOGO,
ID_CUENTA_MAYOR,
ID_GRUPO_CUENTA,
ID_CLASE_CUENTA,
TIPO_SALDO,   

/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

SALDO 

from
(
select 
 /**Llave de la vista*/
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_MAE_TER,
sal.ID_AUXILIAR,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA,
NULL  AS TIPO_SALDO,
sum(sal.DEBITO) AS DEBITO,
sum(sal.CREDITO) AS CREDITO,
NULL AS SALDO
from CN_SALDO_VIGPER sal

JOIN CN_CONTROL_CAD cad
on sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA


GROUP BY
sal.VIG_PER,
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.ID_MAE_TER,
sal.ID_AUXILIAR,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
ID_CATALOGO,
VIG_PER;
CREATE VIEW WS_CONTAB.CN_BALANCE_CONSOL ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, SALDO_ANTERIOR, MVTO_DEBITO, MVTO_CREDITO, NUEVO_SALDO, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT "CUENTA","AUXILIAR","SUBAUXILIAR","TERCERO","NOMBRE_CUENTA","SALDO_ANTERIOR","MVTO_DEBITO","MVTO_CREDITO","NUEVO_SALDO","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE"
FROM
(
/** INICIA BALANCE */
/* Clase Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,1) AS CUENTA,
cla.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Grupo Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,2) AS CUENTA,
gru.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 sal.ID_CIA = gru.ID_CIA
 AND sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Cuenta Mayor*/
SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta con terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta sin terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 cat.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 ter.NOMBRE,
 ter.NITOCC,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION


/* Auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 aux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
NULL AS TERCERO,
subaux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 subaux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)
/** TERMINA BALANCE **/
)ORDER BY
CUENTA ASC,
NVL(AUXILIAR,'000') ASC,
NVL(SUBAUXILIAR,'000') ASC,
NVL(TERCERO,'00000000000000000000000000000000') ASC;
CREATE VIEW WS_CONTAB.CN_BALANCE_DETALLADO ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, SALDO_ANTERIOR, MVTO_DEBITO, MVTO_CREDITO, NUEVO_SALDO, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT
bal.CUENTA,
bal.AUXILIAR,
bal.SUBAUXILIAR,
bal.TERCERO,
bal.NOMBRE_CUENTA,
bal.SALDO_ANTERIOR,
bal.MVTO_DEBITO,
bal.MVTO_CREDITO,
bal.NUEVO_SALDO,
 /**Llave de la vista*/
bal.ID_CIA,
bal.ID_CEN_OP,
bal.ID_VIGENCIA,
bal.ID_PERIODO_CONTABLE
FROM
(
/** INICIA BALANCE */
/* Clase Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,1) AS CUENTA,
cla.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Grupo Cuenta*/
SELECT *
FROM
(
SELECT
CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
NOMBRE_CUENTA,
SUM(SALDO_ANTERIOR) AS SALDO_ANTERIOR,
SUM(MVTO_DEBITO) AS MVTO_DEBITO,
SUM(MVTO_CREDITO) AS MVTO_CREDITO,
SUM(NUEVO_SALDO) AS NUEVO_SALDO,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
FROM 
(
SELECT
SUBSTR(sal.SUBCUENTA,1,2) AS CUENTA,
gru.NOMBRE AS NOMBRE_CUENTA,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ANTERIOR
 ELSE -sal.SALDO_ANTERIOR
END AS SALDO_ANTERIOR,
sal.DEBITO AS MVTO_DEBITO,
sal.CREDITO AS MVTO_CREDITO,
CASE cue.NATURALEZA
 WHEN cla.NATURALEZA THEN sal.SALDO_ACTUAL
 ELSE -sal.SALDO_ACTUAL
END AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 sal.ID_CIA = gru.ID_CIA
 AND sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
)
GROUP BY
CUENTA,
NOMBRE_CUENTA,
 /**Llave de la vista*/
 ID_CIA,
 ID_CEN_OP,
 ID_VIGENCIA,
 ID_PERIODO_CONTABLE
)

UNION

/* Cuenta Mayor*/
SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta con terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Subcuenta sin terceros */
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 cat.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 ter.NOMBRE,
 ter.NITOCC,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION


/* Auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 aux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares con terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 ter.NITOCC,
 ter.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)

UNION

/* Sub auxiliares sin terceros*/
SELECT *
FROM
(
SELECT
sal.SUBCUENTA AS CUENTA,
aux.COD_AUX AS AUXILIAR,
subaux.COD_SUB_AUX AS SUBAUXILIAR,
NULL AS TERCERO,
subaux.NOMBRE AS NOMBRE_CUENTA,
sum(sal.SALDO_ANTERIOR) AS SALDO_ANTERIOR,
sum(sal.DEBITO) AS MVTO_DEBITO,
sum(sal.CREDITO) AS MVTO_CREDITO,
sum(sal.SALDO_ACTUAL) AS NUEVO_SALDO,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM
 CN_SALDO sal

JOIN
 CN_AUXILIAR aux
 ON sal.ID_CIA = aux.ID_CIA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN
 CN_SUB_AUX subaux
 ON sal.ID_CIA = subaux.ID_CIA
 AND sal.ID_SUB_AUX = subaux.ID_SUB_AUX
 AND aux.ID_TIPO_SUB_AUX = subaux.ID_TIPO_SUB_AUX
 
GROUP BY
 sal.SUBCUENTA,
 aux.COD_AUX,
 subaux.COD_SUB_AUX,
 subaux.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_CEN_OP,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE
)
/** TERMINA BALANCE **/
)
bal
ORDER BY
bal.CUENTA ASC,
NVL(bal.AUXILIAR,'000') ASC,
NVL(bal.SUBAUXILIAR,'000') ASC,
NVL(bal.TERCERO,'00000000000000000000000000000000') ASC;
CREATE VIEW WS_CONTAB.CN_CATALOGO_DIGITOS ( DIGITOS, NOMBRE, NATURALEZA, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "DIGITOS","NOMBRE","NATURALEZA","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(

SELECT 
digito||'00000' AS digitos, 
NOMBRE AS NOMBRE,  
NATURALEZA, 
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||'0000' AS digitos, 
'__'||gru.NOMBRE AS NOMBRE, 
NULL AS NATURALEZA,
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_GRUPO_CUENTA gru

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||may.DIGITOS||'00' AS digitos, 
'____'||may.NOMBRE AS NOMBRE, 
may.NATURALEZA, 
0 AS USA_TERCERO, 
0 AS USA_AUXILIAR, 
0 AS USA_CEN_CTO, 
0 AS USA_SUB_CEN_CTO
FROM CN_CUENTA_MAYOR may

JOIN CN_GRUPO_CUENTA gru ON 
may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

UNION

SELECT 
cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos, 
'______'||cat.NOMBRE AS NOMBRE, 
NULL AS NATURALEZA, 
est.USA_TERCERO, 
est.USA_AUXILIAR, 
est.USA_CEN_CTO, 
est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat

JOIN CN_CUENTA_MAYOR may ON 
cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR

JOIN CN_GRUPO_CUENTA gru ON 
may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA

JOIN CN_CLASE_CUENTA cla ON 
cla.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_ESTADO_CATALOGO est ON 
est.ID_ESTADO_CATALOGO = cat.ID_ESTADO_CATALOGO

);
CREATE VIEW WS_CONTAB.CN_CONTROL_CAD_NUM_MOV ( ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE, NUM_MOV )
AS
SELECT ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE, COUNT(ID_MOV_CONT) AS NUM_MOV
FROM CN_CONTROL_CAD NATURAL JOIN CN_MOVIMIENTO_CONTABLE 
GROUP BY ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_CIA, ID_PERIODO_CONTABLE, ID_TIPO_COMPROBANTE;
CREATE VIEW WS_CONTAB.CN_DIGITOS_CUENTAS ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, DIGITOS_GRU, DIGITOS_MAY, NOMBRE, NOM_CORTO, NATURALEZA )
AS
SELECT 
"ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","DIGITOS_GRU","DIGITOS_MAY","NOMBRE","NOM_CORTO","NATURALEZA"
FROM
(
SELECT
may.ID_CIA, 
cla.ID_CLASE_CUENTA, 
gru.ID_GRUPO_CUENTA, 
may.ID_CUENTA_MAYOR,
cla.DIGITO || gru.DIGITO AS DIGITOS_GRU, 
cla.DIGITO || gru.DIGITO || may.DIGITOS AS DIGITOS_MAY, 
may.NOMBRE, 
may.NOM_CORTO,
may.NATURALEZA

FROM CN_CUENTA_MAYOR may 

JOIN CN_GRUPO_CUENTA gru ON
 may .ID_CIA = gru.ID_CIA
 AND may.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND may.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 may.ID_CIA = cla.ID_CIA
 AND may.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
);
CREATE VIEW WS_CONTAB.CN_DOCUMENTO_TOT ( ID_CIA, ID_CAD, ID_VIGENCIA, ID_CEN_OP, ID_DOCUMENTO, ID_TD, ID_MAE_TER, DESCR_MTO, DOC_SOPORTE, FECHA_SOPORTE, TOT_DEBITO, TOT_CREDITO )
AS
SELECT 
 doc.ID_CIA,
 doc.ID_CAD,
 doc.ID_VIGENCIA,
 doc.ID_CEN_OP,
 doc.ID_DOCUMENTO,
 doc.ID_TD,
 doc.ID_MAE_TER,
 doc.DESCR_MTO,
 doc.DOC_SOPORTE,
 doc.FECHA_SOPORTE,
/*totales*/
SUM(NVL(mov.DEBITO,0)) AS TOT_DEBITO,
SUM(NVL(mov.CREDITO,0)) AS TOT_CREDITO
FROM CN_DOCUMENTO doc
LEFT JOIN CN_MOVIMIENTO_CONTABLE mov ON 
 mov.ID_CIA = doc.ID_CIA
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
GROUP BY
 doc.ID_CIA,
 doc.ID_CAD,
 doc.ID_VIGENCIA,
 doc.ID_CEN_OP,
 doc.ID_DOCUMENTO,
 doc.ID_TD,
 doc.ID_MAE_TER,
 doc.DESCR_MTO,
 doc.DOC_SOPORTE,
 doc.FECHA_SOPORTE;
CREATE VIEW WS_CONTAB.CN_LIBRO_AUX ( CUENTA, AUXILIAR, SUBAUXILIAR, TERCERO, NOMBRE_CUENTA, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_MOV_CONT, FECHA_CAD, ID_CAD, ID_DOCUMENTO, DESCR_MTO, DEBITO, CREDITO )
AS
SELECT "CUENTA","AUXILIAR","SUBAUXILIAR","TERCERO","NOMBRE_CUENTA","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_MOV_CONT","FECHA_CAD","ID_CAD","ID_DOCUMENTO","DESCR_MTO","DEBITO","CREDITO"
FROM
(/* clase */
SELECT DISTINCT
cla.DIGITO AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cla.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

UNION

/*grupo*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
gru.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* mayor */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cue.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* catálogo sin aux, sin ter */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
cat.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* con auxiliar, sin tercero */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
NULL AS TERCERO,
aux.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* con tercero, sin auxilar */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/*con auxiliar, con tercero*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS SUBAUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
/* VALORES DE MOVIMIENTO */
NULL AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

UNION

/* movimientos sin auxiliar, sin tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 NULL AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 NULL AS TERCERO,
 cat.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_MAE_TER IS NULL AND mov.ID_AUXILIAR IS NULL

UNION

/* movimientos con auxiliar, sin tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 aux.COD_AUX AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 NULL AS TERCERO,
 aux.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_MAE_TER IS NULL

UNION

/* movimientos sin auxiliar, con tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 NULL AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 ter.NITOCC AS TERCERO,
 ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

WHERE mov.ID_AUXILIAR IS NULL

UNION

/* movimientos con auxiliar, con tercero */
SELECT
 cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
 aux.COD_AUX AS AUXILIAR,
 NULL AS SUBAUXILIAR,
 ter.NITOCC AS TERCERO,
 ter.NOMBRE AS NOMBRE_CUENTA,
 /**Llave de la vista*/
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 /* VALORES DE MOVIMIENTO */
 mov.ID_MOV_CONT AS ID_MOV_CONT,
 cad.FECHA_CAD AS FECHA_CAD,
 mov.ID_CAD AS ID_CAD,
 mov.ID_DOCUMENTO AS ID_DOCUMENTO,
 doc.DESCR_MTO AS DESCR_MTO,
 mov.DEBITO AS DEBITO,
 mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 mov.ID_CIA = aux.ID_CIA
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND mov.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 mov.ID_CIA = ter.ID_CIA
 AND mov.ID_MAE_TER = ter.ID_MAE_TER

JOIN CN_CONTROL_CAD cad
 ON mov.ID_CAD = cad.ID_CAD
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
 mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
 AND mov.ID_CAD = doc.ID_CAD
 AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
 AND mov.ID_CEN_OP = doc.ID_CEN_OP
 AND mov.ID_CIA = doc.ID_CIA

)
lib
/**WHERE ID_CEN_OP = 16 AND ID_PERIODO_CONTABLE = 1 AND ID_VIGENCIA = 2011*/
ORDER BY
lib.CUENTA ASC,
NVL(lib.AUXILIAR,'000') ASC,
NVL(lib.SUBAUXILIAR,'000') ASC,
NVL(lib.TERCERO,'00000000000000000000000000000000') ASC,
NVL(lib.ID_MOV_CONT,'00000000000000000000000000000000') ASC;
CREATE VIEW WS_CONTAB.CN_LIBRO_DIARIO_OF ( ORDEN, CODIGO, COMPROBANTE, FECHA_CAD, DEBITO, CREDITO, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
select 
ORDEN,    
CODIGO,     
COMPROBANTE,                                               
FECHA_CAD,
/*cambio de 0 por null*/
   (CASE
       WHEN DEBITO = 0 THEN null
    ELSE DEBITO
  END ) DEBITO,

   (CASE
       WHEN CREDITO = 0 THEN null
    ELSE CREDITO
  END ) CREDITO,

ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,     
ID_PERIODO_CONTABLE
 
from
(
/*clase cuenta*/
SELECT 
1 AS ORDEN,
cla.DIGITO AS CODIGO,
cla.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY
cla.DIGITO,
cla.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*grupo cuenta*/
SELECT 
2 AS ORDEN,
cla.DIGITO || gru.DIGITO AS CODIGO,
gru.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO,
gru.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*cuenta mayor*/
SELECT 
3 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS AS CODIGO,
cue.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO || cue.DIGITOS,
cue.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*catalogo*/
SELECT 
4 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS AS CODIGO,
cat.NOMBRE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
NULL AS FECHA_CAD,
SUM(mov.DEBITO) AS DEBITO,
SUM(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

GROUP BY 
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS,
cat.NOMBRE,
mov.ID_CIA,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
mov.ID_CEN_OP

UNION

/*movimientos por tipo de comprobante*/
SELECT 
5 AS ORDEN,
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS AS CODIGO,
tip.ID_TIPO_COMPROBANTE || ' ' || tip.NOM_TIPO_COMPROBANTE AS COMPROBANTE,
/* VALORES DE MOVIMIENTO */
cad.FECHA_CAD AS FECHA_CAD,
sum(mov.DEBITO) AS DEBITO,
sum(mov.CREDITO) AS CREDITO,
 /**Llave de la vista*/
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
mov.ID_CIA = gru.ID_CIA
AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_TIPO_COMPROBANTE tip ON
tip.ID_CIA = cad.ID_CIA
 and tip.ID_TIPO_COMPROBANTE = cad.ID_TIPO_COMPROBANTE

group by 
cla.DIGITO || gru.DIGITO || cue.DIGITOS || cat.DIGITOS,
tip.ID_TIPO_COMPROBANTE || ' ' || tip.NOM_TIPO_COMPROBANTE,
cad.FECHA_CAD,
mov.ID_CIA,
mov.ID_CEN_OP,
mov.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE

) 


ORDER BY ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP, CODIGO, ORDEN, FECHA_CAD;
CREATE VIEW WS_CONTAB.CN_LIBRO_MAYOR ( CUENTA, NOMBRE, SAL_ANT_DEB, SAL_ANT_CRE, MOV_DEBITO, MOV_CREDITO, SAL_ACT_DEB, SAL_ACT_CRE, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP )
AS
SELECT "CUENTA","NOMBRE","SAL_ANT_DEB","SAL_ANT_CRE","MOV_DEBITO","MOV_CREDITO","SAL_ACT_DEB","SAL_ACT_CRE","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CEN_OP"
FROM
(

SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_DEB,
NULL AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_DEB,
NULL AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='D'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

UNION

SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
NULL AS SAL_ANT_DEB,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
NULL AS SAL_ACT_DEB,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='C'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE,
sal.ID_CEN_OP

)
ORDER BY   ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CEN_OP, CUENTA

);
CREATE VIEW WS_CONTAB.CN_LIBRO_MAYOR_CONSOL ( CUENTA, NOMBRE, SAL_ANT_DEB, SAL_ANT_CRE, MOV_DEBITO, MOV_CREDITO, SAL_ACT_DEB, SAL_ACT_CRE, ID_CIA, ID_VIGENCIA, ID_PERIODO_CONTABLE )
AS
SELECT "CUENTA","NOMBRE","SAL_ANT_DEB","SAL_ANT_CRE","MOV_DEBITO","MOV_CREDITO","SAL_ACT_DEB","SAL_ACT_CRE","ID_CIA","ID_VIGENCIA","ID_PERIODO_CONTABLE"
FROM
(

SELECT *
FROM
(
SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_DEB,
NULL AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_DEB,
NULL AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='D'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

UNION

SELECT
SUBSTR(sal.SUBCUENTA,1,4) AS CUENTA,
cue.NOMBRE AS NOMBRE,
NULL AS SAL_ANT_DEB,
sum(sal.SALDO_ANTERIOR) AS SAL_ANT_CRE,
sum(sal.DEBITO) AS MOV_DEBITO,
sum(sal.CREDITO) AS MOV_CREDITO,
NULL AS SAL_ACT_DEB,
sum(sal.SALDO_ACTUAL) AS SAL_ACT_CRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

FROM CN_SALDO sal

JOIN CN_CUENTA_MAYOR cue ON
 sal.ID_CIA = cue.ID_CIA
 AND sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

WHERE cue.NATURALEZA='C'

GROUP BY
 SUBSTR(sal.SUBCUENTA,1,4),
 cue.NOMBRE,
 /**Llave de la vista*/
 sal.ID_CIA,
 sal.ID_VIGENCIA,
 sal.ID_PERIODO_CONTABLE

)
ORDER BY   ID_VIGENCIA, ID_PERIODO_CONTABLE, CUENTA

);
CREATE VIEW WS_CONTAB.CN_MOVIMIENTO_AUX ( DIGITO, AUXILIAR, TERCERO, NOMBRE, ID_MOV_CONT, FECHA_CAD, ID_CAD, ID_DOCUMENTO, DESCR_MTO, DEBITO, CREDITO )
AS
SELECT 
"DIGITO","AUXILIAR","TERCERO","NOMBRE","ID_MOV_CONT","FECHA_CAD","ID_CAD","ID_DOCUMENTO","DESCR_MTO","DEBITO","CREDITO"
FROM
(
/** INICIA MOVIMIENTO*/
/* Clase Cuenta*/
SELECT 
DIGITO,
NULL as AUXILIAR,
NULL AS TERCERO,
NOMBRE,
ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO

FROM CN_CLASE_CUENTA 
NATURAL JOIN CN_MOVIMIENTO_CONTABLE 

UNION

/* Grupo Cuenta*/
SELECT 
cla.DIGITO||gru.DIGITO,
NULL as AUXILIAR,
NULL AS TERCERO,
gru.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov
JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

UNION

/* Cuenta Mayor*/
SELECT 
cla.DIGITO||gru.DIGITO||cue.DIGITOS,
NULL as AUXILIAR,
NULL AS TERCERO,
cue.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
NULL AS FECHA_CAD,
NULL AS ID_CAD,
NULL AS ID_DOCUMENTO,
NULL AS DESCR_MTO,
NULL AS DEBITO,
NULL AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

UNION

/* Catalogo*/
SELECT 
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
NULL AS TERCERO,
cat.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO
FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA


UNION

/* Terceros con auxiliar */
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_AUXILIAR aux ON 
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

UNION

/* Terceros sin auxiliar */
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
NULL AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA


UNION

/* Auxiliares con terceros*/
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
ter.NITOCC AS TERCERO,
ter.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

UNION

/* Auxiliares sin terceros*/
SELECT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
aux.COD_AUX AS AUXILIAR,
NULL AS TERCERO,
aux.NOMBRE,
mov.ID_MOV_CONT AS ID_MOV_CONT,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_CAD AS ID_CAD,
doc.ID_DOCUMENTO AS ID_DOCUMENTO,
doc.DESCR_MTO AS DESCR_MTO,
mov.DEBITO AS DEBITO,
mov.CREDITO AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

/** TERMINA MOVIMIENTO**/
)
ORDER BY ID_MOV_CONT , DIGITO;
CREATE VIEW WS_CONTAB.CN_MOVIMIENTO_VIGPER ( VIG_PER, ID_PERIODO_CONTABLE, ID_VIGENCIA, ID_MOV_CONT, ID_DOCUMENTO, ID_CAD, ID_CEN_OP, ID_CIA, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, DEBITO, CREDITO, VALOR_BASE )
AS
SELECT "VIG_PER","ID_PERIODO_CONTABLE","ID_VIGENCIA","ID_MOV_CONT","ID_DOCUMENTO","ID_CAD","ID_CEN_OP","ID_CIA","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA","ID_MAE_TER","ID_AUXILIAR","ID_SUB_AUX","ID_CENTRO_COSTO","ID_SUB_CENTRO_COSTO","DEBITO","CREDITO","VALOR_BASE"
FROM
(
SELECT 
mov.ID_VIGENCIA || SUBSTR( '00'  || cad.ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
cad.ID_PERIODO_CONTABLE ,
mov.ID_VIGENCIA,  
mov.ID_MOV_CONT,
mov.ID_DOCUMENTO,
mov.ID_CAD,        
mov.ID_CEN_OP,     
mov.ID_CIA,     
mov.ID_CATALOGO,     
mov.ID_CUENTA_MAYOR,     
mov.ID_GRUPO_CUENTA,     
mov.ID_CLASE_CUENTA ,    
mov.ID_MAE_TER ,    
mov.ID_AUXILIAR ,    
mov.ID_SUB_AUX,     
mov.ID_CENTRO_COSTO,     
mov.ID_SUB_CENTRO_COSTO,     
mov.DEBITO,     
mov.CREDITO,     
mov.VALOR_BASE 
FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

)

ORDER BY VIG_PER;
CREATE VIEW WS_CONTAB.CN_MOV_AUX_TER ( VIG_PER, FECHA_CAD, ID_TIPO_COMPROBANTE, TERCERO, DEBITO, CREDITO, SALDO, TIPO_DOC, DOC_SOPORTE, DESCR_MTO, ID_CIA, ID_CEN_OP, ID_AUXILIAR, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA )
AS
select "VIG_PER","FECHA_CAD","ID_TIPO_COMPROBANTE","TERCERO","DEBITO","CREDITO","SALDO","TIPO_DOC","DOC_SOPORTE","DESCR_MTO","ID_CIA","ID_CEN_OP","ID_AUXILIAR","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA"
from(

SELECT 
VIG_PER,
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO,
sum(DEBITO) as DEBITO,
sum(CREDITO) as CREDITO,
NULL AS SALDO,
TIPO_DOC,
DOC_SOPORTE,
DESCR_MTO,
/*llave de la vista*/ 
ID_CIA, 
ID_CEN_OP,
ID_AUXILIAR,
ID_CATALOGO,     
ID_CUENTA_MAYOR,     
ID_GRUPO_CUENTA,     
ID_CLASE_CUENTA 

FROM
(
/* Movimientos de auxiliares con terceros*/
SELECT
cad.ID_VIGENCIA || SUBSTR( '00'  || cad.ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
cad.FECHA_CAD AS FECHA_CAD,
cad.ID_TIPO_COMPROBANTE AS ID_TIPO_COMPROBANTE,
ter.ID_MAE_TER AS TERCERO,

/*cambio de 0 por null*/
   (CASE
       WHEN mov.DEBITO = 0 THEN null
    ELSE mov.DEBITO
  END ) DEBITO,


   (CASE
       WHEN mov.CREDITO = 0 THEN null
    ELSE mov.CREDITO
  END ) CREDITO,

td.NOMBRE AS TIPO_DOC,
doc.DOC_SOPORTE AS DOC_SOPORTE,
doc.DESCR_MTO AS DESCR_MTO,
/*llave de la vista*/ 
mov.ID_CIA, 
mov.ID_CEN_OP,
mov.ID_AUXILIAR,
mov.ID_CATALOGO,     
mov.ID_CUENTA_MAYOR,     
mov.ID_GRUPO_CUENTA,     
mov.ID_CLASE_CUENTA 

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_AUXILIAR aux ON
 mov.ID_AUXILIAR = aux.ID_AUXILIAR
 AND mov.ID_CATALOGO = aux.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad ON
mov.ID_CAD = cad.ID_CAD
AND mov.ID_VIGENCIA = cad.ID_VIGENCIA
AND mov.ID_CEN_OP = cad.ID_CEN_OP
AND mov.ID_CIA = cad.ID_CIA

JOIN CN_DOCUMENTO doc ON
mov.ID_DOCUMENTO = doc.ID_DOCUMENTO
AND mov.ID_CAD = doc.ID_CAD
AND mov.ID_VIGENCIA = doc.ID_VIGENCIA
AND mov.ID_CEN_OP = doc.ID_CEN_OP
AND mov.ID_CIA = doc.ID_CIA

JOIN CN_MAE_TER ter ON 
mov.ID_MAE_TER = ter.ID_MAE_TER
AND  mov.ID_CIA = ter.ID_CIA

JOIN CN_TD td ON 
doc.ID_TD = td.ID_TD


)

group by
VIG_PER,
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO,
TIPO_DOC,
DOC_SOPORTE,
DESCR_MTO,
/*llave de la vista*/ 
ID_CIA, 
ID_CEN_OP,
ID_AUXILIAR,
ID_CATALOGO,     
ID_CUENTA_MAYOR,     
ID_GRUPO_CUENTA,     
ID_CLASE_CUENTA 


)

ORDER BY
ID_CIA,
ID_CEN_OP, 
FECHA_CAD,
ID_TIPO_COMPROBANTE,
TERCERO;
CREATE VIEW WS_CONTAB.CN_SALDO_CRE_SIN_ANT ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO, SALDO_PERIODO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.CREDITO) - SUM(mov.DEBITO) AS SALDO_PERIODO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE cue.NATURALEZA = 'C'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA;
CREATE VIEW WS_CONTAB.CN_SALDO_DEB_SIN_ANT ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO, SALDO_PERIODO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO,
 SUM(mov.DEBITO) - SUM(mov.CREDITO) AS SALDO_PERIODO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

WHERE cue.NATURALEZA = 'D'

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA;
CREATE VIEW WS_CONTAB.CN_SALDO_SIN_CONSOL ( ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, DEBITO, CREDITO )
AS
SELECT 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO||
 gru.DIGITO||
 cue.DIGITOS||
 cat.DIGITOS
 AS SUBCUENTA,
 SUM(mov.DEBITO) AS DEBITO,
 SUM(mov.CREDITO) AS CREDITO

FROM CN_MOVIMIENTO_CONTABLE mov

JOIN CN_CONTROL_CAD cad ON
 mov.ID_CAD = cad.ID_CAD
 and mov.ID_CIA = cad.ID_CIA
 AND mov.ID_CEN_OP = cad.ID_CEN_OP
 AND mov.ID_VIGENCIA = cad.ID_VIGENCIA

JOIN CN_VIGENCIA vig ON
 mov.ID_VIGENCIA = vig.ID_VIGENCIA

JOIN CN_PERIODO_CONTABLE per ON
 cad.ID_PERIODO_CONTABLE = per.ID_PERIODO_CONTABLE

JOIN CN_CATALOGO cat ON
 mov.ID_CIA = cat.ID_CIA
 AND mov.ID_CATALOGO = cat.ID_CATALOGO
 AND mov.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA
 
JOIN CN_CUENTA_MAYOR cue ON
 mov.ID_CIA = cue.ID_CIA
 AND mov.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND mov.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 mov.ID_CIA = gru.ID_CIA
 AND mov.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND mov.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 mov.ID_CIA = cla.ID_CIA
 AND mov.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

GROUP BY 
 mov.ID_CIA,
 mov.ID_CEN_OP,
 mov.ID_VIGENCIA,
 cad.ID_PERIODO_CONTABLE,
 mov.ID_CLASE_CUENTA,
 mov.ID_GRUPO_CUENTA,
 mov.ID_CUENTA_MAYOR,
 mov.ID_CATALOGO,
 mov.ID_MAE_TER,
 mov.ID_AUXILIAR,
 mov.ID_SUB_AUX,
 mov.ID_CENTRO_COSTO,
 mov.ID_SUB_CENTRO_COSTO,
 cla.DIGITO,
 gru.DIGITO,
 cue.DIGITOS,
 cat.DIGITOS

ORDER BY
 SUBCUENTA;
CREATE VIEW WS_CONTAB.CN_SALDO_VIGPER ( VIG_PER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_MAE_TER, ID_AUXILIAR, ID_SUB_AUX, ID_CENTRO_COSTO, ID_SUB_CENTRO_COSTO, SUBCUENTA, SALDO_ANTERIOR, DEBITO, CREDITO, SALDO_ACTUAL )
AS
SELECT "VIG_PER","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","ID_MAE_TER","ID_AUXILIAR","ID_SUB_AUX","ID_CENTRO_COSTO","ID_SUB_CENTRO_COSTO","SUBCUENTA","SALDO_ANTERIOR","DEBITO","CREDITO","SALDO_ACTUAL"
FROM
(
SELECT 
ID_VIGENCIA || SUBSTR( '00'  || ID_PERIODO_CONTABLE , -2,2 ) AS VIG_PER,
ID_CIA,
ID_CEN_OP,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CLASE_CUENTA,
ID_GRUPO_CUENTA,
ID_CUENTA_MAYOR,
ID_CATALOGO,
ID_MAE_TER,
ID_AUXILIAR,
ID_SUB_AUX,
ID_CENTRO_COSTO,
ID_SUB_CENTRO_COSTO,
SUBCUENTA,
SALDO_ANTERIOR,
DEBITO,
CREDITO,
SALDO_ACTUAL
FROM CN_SALDO

)

ORDER BY VIG_PER;
CREATE VIEW WS_CONTAB.CN_SUBC_AUX_TER ( VIG_PER, CUENTA, NOMBRE, COD_AUX, NOM_AUX, ID_AUXILIAR, NITOCC, NOM_TER, ID_MAE_TER, ID_CIA, ID_CEN_OP, ID_VIGENCIA, ID_PERIODO_CONTABLE, ID_CATALOGO, ID_CUENTA_MAYOR, ID_GRUPO_CUENTA, ID_CLASE_CUENTA )
AS
SELECT "VIG_PER","CUENTA","NOMBRE","COD_AUX","NOM_AUX","ID_AUXILIAR","NITOCC","NOM_TER","ID_MAE_TER","ID_CIA","ID_CEN_OP","ID_VIGENCIA","ID_PERIODO_CONTABLE","ID_CATALOGO","ID_CUENTA_MAYOR","ID_GRUPO_CUENTA","ID_CLASE_CUENTA"
FROM
(
/* catálogo sin aux, sin ter */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
NULL AS COD_AUX,
NULL AS NOM_AUX,
NULL AS ID_AUXILIAR,
NULL AS NITOCC,
NULL AS NOM_TER,
NULL AS ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

UNION

/* con auxiliar, sin tercero */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
aux.COD_AUX,
aux.NOMBRE AS NOM_AUX,
sal.ID_AUXILIAR,
NULL AS NITOCC,
NULL AS NOM_TER,
NULL AS ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_AUXILIAR aux ON
 sal.ID_CIA = aux.ID_CIA
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR


UNION

/* sin auxilar, con tercero  */
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
NULL AS COD_AUX,
NULL AS NOM_AUX,
NULL AS ID_AUXILIAR,
ter.NITOCC,
ter.NOMBRE AS NOM_TER,
sal.ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

UNION

/*con auxiliar, con tercero*/
SELECT DISTINCT
cla.DIGITO||gru.DIGITO||cue.DIGITOS||cat.DIGITOS AS CUENTA,
cat.NOMBRE AS NOMBRE,
aux.COD_AUX,
aux.NOMBRE AS NOM_AUX,
sal.ID_AUXILIAR,
ter.NITOCC,
ter.NOMBRE AS NOM_TER,
sal.ID_MAE_TER,
 /**Llave de la vista*/
sal.ID_CIA,
sal.ID_CEN_OP,
sal.ID_VIGENCIA,
cad.ID_PERIODO_CONTABLE,
sal.VIG_PER,
sal.ID_CATALOGO,
sal.ID_CUENTA_MAYOR,
sal.ID_GRUPO_CUENTA,
sal.ID_CLASE_CUENTA

FROM CN_SALDO_VIGPER sal

JOIN CN_CLASE_CUENTA cla ON
 sal.ID_CIA = cla.ID_CIA
 AND sal.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
  sal.ID_CIA =  sal.ID_CIA
 AND  sal.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CUENTA_MAYOR cue ON
  sal.ID_CIA = cue.ID_CIA
 AND  sal.ID_CUENTA_MAYOR = cue.ID_CUENTA_MAYOR
 AND  sal.ID_GRUPO_CUENTA = cue.ID_GRUPO_CUENTA
 AND  sal.ID_CLASE_CUENTA = cue.ID_CLASE_CUENTA

JOIN CN_CATALOGO cat ON
 sal.ID_CIA = cat.ID_CIA
 AND sal.ID_CATALOGO = cat.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = cat.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = cat.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = cat.ID_CLASE_CUENTA

JOIN CN_CONTROL_CAD cad
 ON sal.ID_VIGENCIA = cad.ID_VIGENCIA
 AND sal.ID_CEN_OP = cad.ID_CEN_OP
 AND sal.ID_CIA = cad.ID_CIA

JOIN CN_AUXILIAR aux ON
 sal.ID_CIA = aux.ID_CIA
 AND sal.ID_CATALOGO = aux.ID_CATALOGO
 AND sal.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND sal.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND sal.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA
 AND sal.ID_AUXILIAR = aux.ID_AUXILIAR

JOIN CN_MAE_TER ter ON
 sal.ID_CIA = ter.ID_CIA
 AND sal.ID_MAE_TER = ter.ID_MAE_TER

)

ORDER BY 
ID_CIA,
ID_VIGENCIA,
ID_PERIODO_CONTABLE,
ID_CEN_OP,
CUENTA;
CREATE VIEW WS_CONTAB.CN_SUBC_DIGITOS ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, DIGITOS, NOMBRE, ACTIVO, CORRIENTE, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","DIGITOS","NOMBRE","ACTIVO","CORRIENTE","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(
SELECT cat.ID_CIA, cla.ID_CLASE_CUENTA, gru.ID_GRUPO_CUENTA, may.ID_CUENTA_MAYOR, cat.ID_CATALOGO, cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos, cat.NOMBRE, cat.ACTIVO, cat.CORRIENTE, est.USA_TERCERO, est.USA_AUXILIAR, est.USA_CEN_CTO, est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat 

JOIN CN_ESTADO_CATALOGO est ON
 cat.ID_ESTADO_CATALOGO = est.ID_ESTADO_CATALOGO
 
JOIN CN_CUENTA_MAYOR may ON
 cat.ID_CIA = may.ID_CIA
 AND cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = may.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = may.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 cat.ID_CIA = gru.ID_CIA
 AND cat.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 cat.ID_CIA = cla.ID_CIA
 AND cat.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA
);
CREATE VIEW WS_CONTAB.CN_SUBC_DIGITOS_AUX ( ID_CIA, ID_CLASE_CUENTA, ID_GRUPO_CUENTA, ID_CUENTA_MAYOR, ID_CATALOGO, ID_AUXILIAR, DIGITOS, COD_AUX, NOMBRE, NOM_AUX, ACTIVO, CORRIENTE, USA_TERCERO, USA_AUXILIAR, USA_CEN_CTO, USA_SUB_CEN_CTO )
AS
SELECT "ID_CIA","ID_CLASE_CUENTA","ID_GRUPO_CUENTA","ID_CUENTA_MAYOR","ID_CATALOGO","ID_AUXILIAR","DIGITOS","COD_AUX","NOMBRE","NOM_AUX","ACTIVO","CORRIENTE","USA_TERCERO","USA_AUXILIAR","USA_CEN_CTO","USA_SUB_CEN_CTO"
FROM
(
SELECT cat.ID_CIA, cla.ID_CLASE_CUENTA,
 gru.ID_GRUPO_CUENTA,
 may.ID_CUENTA_MAYOR,
 cat.ID_CATALOGO,
 aux.ID_AUXILIAR,
 cla.DIGITO||gru.DIGITO||may.DIGITOS||cat.DIGITOS AS digitos,
 aux.COD_AUX,
 cat.NOMBRE,
 aux.NOMBRE AS NOM_AUX,
 cat.ACTIVO,
 cat.CORRIENTE,
 est.USA_TERCERO,
 est.USA_AUXILIAR,
 est.USA_CEN_CTO,
 est.USA_SUB_CEN_CTO
FROM CN_CATALOGO cat 

JOIN CN_ESTADO_CATALOGO est ON
 cat.ID_ESTADO_CATALOGO = est.ID_ESTADO_CATALOGO
 
JOIN CN_CUENTA_MAYOR may ON
 cat.ID_CIA = may.ID_CIA
 AND cat.ID_CUENTA_MAYOR = may.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = may.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = may.ID_CLASE_CUENTA

JOIN CN_GRUPO_CUENTA gru ON
 cat.ID_CIA = gru.ID_CIA
 AND cat.ID_GRUPO_CUENTA = gru.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = gru.ID_CLASE_CUENTA

JOIN CN_CLASE_CUENTA cla ON
 cat.ID_CIA = cla.ID_CIA
 AND cat.ID_CLASE_CUENTA = cla.ID_CLASE_CUENTA

JOIN CN_AUXILIAR aux ON
 cat.ID_CIA = aux.ID_CIA
 AND cat.ID_CATALOGO = aux.ID_CATALOGO
 AND cat.ID_CUENTA_MAYOR = aux.ID_CUENTA_MAYOR
 AND cat.ID_GRUPO_CUENTA = aux.ID_GRUPO_CUENTA
 AND cat.ID_CLASE_CUENTA = aux.ID_CLASE_CUENTA

WHERE aux.ACTIVO <> 0
);
CREATE VIEW WS_CONTAB.CN_TIP_COM_FECHA ( ID_CIA, ID_CEN_OP, ID_TIPO_COMPROBANTE, FECHA_CAD )
AS
SELECT DISTINCT ID_CIA, ID_CEN_OP, ID_TIPO_COMPROBANTE, FECHA_CAD
FROM CN_CONTROL_CAD
ORDER BY FECHA_CAD;

