2007-08-21 16:17:05 +00:00
DROP VIEW V_INF_VENTAS_ARTICULOS;
2008-04-11 15:00:35 +00:00
DROP VIEW V_INF_ULTVEN_PORCLIENTE;
DROP VIEW V_INF_ULTVEN_PORARTICULO;
DROP VIEW V_INF_FEC_ULTVEN_PORCLIENTE;
DROP VIEW V_INF_FEC_ULTVEN_PORARTICULO;
DROP VIEW V_INF_ULTCOM_PORARTICULO;
DROP VIEW V_INF_ULTCOM;
DROP VIEW V_INF_FEC_ULTCOM;
2007-08-01 18:24:02 +00:00
2007-07-18 11:37:39 +00:00
DROP VIEW V_INV_DETALLE_RESERVAS;
DROP VIEW V_ARTICULOS;
2007-06-19 17:12:00 +00:00
2007-06-11 15:29:06 +00:00
/*
VISTAS RELATIVAS A PEDIDOS Y ALBARANES
*/
2007-06-13 10:00:42 +00:00
DROP VIEW V_HISTORICO_MOVIMIENTOS;
DROP VIEW V_HIS_MOV_AUX;
DROP VIEW V_HIS_MOV_ALB_CLI;
DROP VIEW V_HIS_MOV_ALB_PROV;
DROP VIEW V_HIS_MOV_REGULARIZACIONES;
2007-06-11 15:29:06 +00:00
DROP VIEW V_INVENTARIO;
DROP VIEW V_INVENTARIO_AUX;
DROP VIEW V_INV_STOCK;
DROP VIEW V_INV_STOCK_AUX;
DROP VIEW V_INV_ENTRADAS_PENDIENTES;
DROP VIEW V_INV_SALIDAS;
DROP VIEW V_INV_SALIDAS_AUX;
DROP VIEW V_INV_SALIDAS_MOV;
DROP VIEW V_INV_ENTRADAS;
DROP VIEW V_INV_ENTRADAS_AUX;
DROP VIEW V_INV_ENTRADAS_MOV;
DROP VIEW V_INV_ENTRADAS_ALB;
DROP VIEW V_INV_RESERVAS;
DROP VIEW V_INV_SALIDAS_ALB;
DROP VIEW V_PED_CLI_ART_PEND_PEDIR_PROV;
DROP VIEW V_PEDIDOS_CLIENTE;
DROP VIEW V_PED_CLI_SITUACION;
2008-02-04 16:49:36 +00:00
DROP VIEW V_PED_CLI_ART_SIN_ALBARAN;
2008-04-11 15:00:35 +00:00
DROP VIEW V_PED_CLI_PROCESO;
DROP VIEW V_PED_CLI_CON_ALBARANES;
DROP VIEW V_PED_CLI_PENDIENTES_PROCESO;
2007-06-11 15:29:06 +00:00
DROP VIEW V_PED_CLI_ARTICULOS;
DROP VIEW V_PED_CLI_ARTICULOS_AUX;
DROP VIEW V_PED_CLI_ART_SITUACION_CANT;
DROP VIEW V_PED_CLI_ART_SITUACION;
DROP VIEW V_PED_CLI_DETALLES;
DROP VIEW V_ALB_CLI_DETALLES;
DROP VIEW V_ALBARANES_CLIENTE;
DROP VIEW V_ALB_CLI_SITUACION;
2008-05-28 17:19:59 +00:00
DROP VIEW V_PED_PROV_ART_SIN_ALBARAN;
2007-06-11 15:29:06 +00:00
DROP VIEW V_PEDIDOS_PROVEEDOR;
DROP VIEW V_PED_PROV_SITUACION;
2008-05-28 17:19:59 +00:00
DROP VIEW V_PED_PROV_PROCESO;
2008-06-11 10:43:56 +00:00
DROP VIEW V_PED_PROV_CON_ALBARANES;
2008-05-28 17:19:59 +00:00
DROP VIEW V_PED_PROV_PENDIENTES_PROCESO;
2007-06-11 15:29:06 +00:00
DROP VIEW V_PED_PROV_ARTICULOS;
DROP VIEW V_PED_PROV_ARTICULOS_AUX;
DROP VIEW V_PED_PROV_ARTICULOS_RECIBIDOS;
DROP VIEW V_PED_PROV_DETALLES;
DROP VIEW V_ALB_PROV_DETALLES;
/*
VISTAS GENERALES
*/
DROP VIEW V_AGENTES_COMISIONES_DET_FAC;
DROP VIEW V_FACTURAS_CLIENTE;
DROP VIEW V_FACTURAS_PROVEEDOR;
DROP VIEW V_FAC_CLI_SITUACION;
DROP VIEW V_FAC_PRO_SITUACION;
DROP VIEW V_REC_FAC_CLI_COBRADOS;
DROP VIEW V_REC_FAC_PRO_PAGADOS;
DROP VIEW V_RECIBOS_CLIENTE;
2007-07-09 17:16:22 +00:00
DROP VIEW V_REMESAS_CLIENTE;
DROP VIEW V_REC_CLI_COMPENSADOS;
2007-06-11 15:29:06 +00:00
DROP VIEW V_RECIBOS_PROVEEDOR;
2007-07-11 14:12:15 +00:00
DROP VIEW V_REMESAS_PROVEEDOR;
DROP VIEW V_REC_PRO_COMPENSADOS;
2007-06-11 15:29:06 +00:00
DROP VIEW V_REC_CLI_SITUACION;
DROP VIEW V_REC_PRO_SITUACION;
DROP VIEW V_REC_FAC_CLI;
DROP VIEW V_REC_FAC_PRO;
DROP VIEW V_AGENTES;
DROP VIEW V_ALBARANES_PROVEEDOR;
DROP VIEW V_PROVEEDORES;
DROP VIEW V_CLIENTES;
DROP VIEW V_CONTACTOS;
CREATE VIEW V_CONTACTOS(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA)
AS
SELECT CONTACTOS.ID,
CONTACTOS_CATEGORIAS.ID_CATEGORIA,
CONTACTOS.NIF_CIF,
CONTACTOS.NOMBRE,
CONTACTOS.CALLE,
CONTACTOS.POBLACION,
CONTACTOS.PROVINCIA,
CONTACTOS.CODIGO_POSTAL,
CONTACTOS.TELEFONO_1,
CONTACTOS.TELEFONO_2,
CONTACTOS.MOVIL_1,
CONTACTOS.MOVIL_2,
CONTACTOS.FAX,
CONTACTOS.EMAIL_1,
CONTACTOS.EMAIL_2,
CONTACTOS.PAGINA_WEB,
CONTACTOS.NOTAS,
CONTACTOS.FECHA_ALTA,
CONTACTOS.FECHA_MODIFICACION,
CONTACTOS.USUARIO,
EMPRESAS_CONTACTOS.ID_EMPRESA,
CONTACTOS.REFERENCIA
FROM CONTACTOS
INNER JOIN CONTACTOS_CATEGORIAS ON (CONTACTOS_CATEGORIAS.ID_CONTACTO =
CONTACTOS.ID)
INNER JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO =
CONTACTOS.ID);
CREATE VIEW V_CLIENTES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA,
ID_AGENTE,
GRUPO_CLIENTE,
NOMBRE_COMERCIAL,
VENCIMIENTO_FACTURAS,
BLOQUEADO,
REGIMEN_IVA,
MOTIVO_BLOQUEO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
ID_FORMA_PAGO,
2007-07-16 18:29:36 +00:00
TIENDA_WEB,
2007-09-27 17:39:23 +00:00
AGENTE,
RAPEL)
2007-06-11 15:29:06 +00:00
AS
SELECT
V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA,
V_CONTACTOS.REFERENCIA,
CLIENTES_DATOS.ID_AGENTE,
CLIENTES_DATOS.GRUPO_CLIENTE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
CLIENTES_DATOS.VENCIMIENTO_FACTURAS,
CLIENTES_DATOS.BLOQUEADO,
CLIENTES_DATOS.REGIMEN_IVA,
CLIENTES_DATOS.MOTIVO_BLOQUEO,
CLIENTES_DATOS.RECARGO_EQUIVALENCIA,
CLIENTES_DATOS.ID_TIPO_IVA,
CLIENTES_DATOS.ID_FORMA_PAGO,
2007-07-16 18:29:36 +00:00
CLIENTES_DATOS.TIENDA_WEB,
2007-09-27 17:39:23 +00:00
CONTACTOS.NOMBRE AS AGENTE,
CLIENTES_DATOS.RAPEL
2007-06-11 15:29:06 +00:00
FROM
V_CONTACTOS
LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE)
2007-07-16 18:29:36 +00:00
LEFT OUTER JOIN CONTACTOS ON (CLIENTES_DATOS.ID_AGENTE = CONTACTOS.ID)
2007-06-11 15:29:06 +00:00
WHERE
V_CONTACTOS.ID_CATEGORIA = 1;
CREATE VIEW V_PROVEEDORES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA,
DESCUENTO,
REGIMEN_IVA,
ID_TIPO_IVA,
ID_FORMA_PAGO,
TIENDA_WEB)
AS
SELECT
V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA,
V_CONTACTOS.REFERENCIA,
PROVEEDORES_DATOS.DESCUENTO,
PROVEEDORES_DATOS.REGIMEN_IVA,
PROVEEDORES_DATOS.ID_TIPO_IVA,
PROVEEDORES_DATOS.ID_FORMA_PAGO,
PROVEEDORES_DATOS.TIENDA_WEB
FROM
PROVEEDORES_DATOS
INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID)
WHERE
V_CONTACTOS.ID_CATEGORIA = 2;
2008-07-15 18:09:26 +00:00
2007-06-11 15:29:06 +00:00
CREATE VIEW V_ALBARANES_PROVEEDOR(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
ID_PROVEEDOR,
NOMBRE,
FECHA_ALBARAN,
REFERENCIA,
REFERENCIA_PROVEEDOR,
TIPO,
ID_ALMACEN,
NOMBRE_ALMACEN,
ID_PEDIDO,
REF_PED_PROVEEDOR,
ID_FACTURA,
REF_FACTURA,
REF_FACTURA_PROV,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT
ALBARANES_PROVEEDOR.ID,
ALBARANES_PROVEEDOR.ID_EMPRESA,
ALBARANES_PROVEEDOR.ID_PROVEEDOR,
2007-07-16 16:54:12 +00:00
CONTACTOS.NOMBRE,
2007-06-11 15:29:06 +00:00
ALBARANES_PROVEEDOR.FECHA_ALBARAN,
ALBARANES_PROVEEDOR.REFERENCIA,
2007-07-03 18:57:02 +00:00
ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR,
2008-01-23 20:14:11 +00:00
ALBARANES_PROVEEDOR.TIPO,
2007-06-11 15:29:06 +00:00
ALBARANES_PROVEEDOR.ID_ALMACEN,
ALMACENES.NOMBRE AS NOMBRE_ALMACEN,
ALBARANES_PROVEEDOR.ID_PEDIDO,
PEDIDOS_PROVEEDOR.REFERENCIA AS REF_PED_PROVEEDOR,
ALBARANES_PROVEEDOR.ID_FACTURA,
2007-07-03 18:57:02 +00:00
FACTURAS_PROVEEDOR.REFERENCIA AS REF_FACTURA,
ALBARANES_PROVEEDOR.REF_FACTURA_PROV,
2007-06-11 15:29:06 +00:00
ALBARANES_PROVEEDOR.CALLE,
ALBARANES_PROVEEDOR.CODIGO_POSTAL,
ALBARANES_PROVEEDOR.POBLACION,
ALBARANES_PROVEEDOR.PROVINCIA,
ALBARANES_PROVEEDOR.PERSONA_CONTACTO,
ALBARANES_PROVEEDOR.TELEFONO,
ALBARANES_PROVEEDOR.IMPORTE_NETO,
ALBARANES_PROVEEDOR.IMPORTE_PORTE,
ALBARANES_PROVEEDOR.DESCUENTO,
ALBARANES_PROVEEDOR.IMPORTE_DESCUENTO,
ALBARANES_PROVEEDOR.BASE_IMPONIBLE,
ALBARANES_PROVEEDOR.IVA,
ALBARANES_PROVEEDOR.IMPORTE_IVA,
ALBARANES_PROVEEDOR.IMPORTE_TOTAL,
ALBARANES_PROVEEDOR.OBSERVACIONES,
ALBARANES_PROVEEDOR.INCIDENCIAS,
ALBARANES_PROVEEDOR.INCIDENCIAS_ACTIVAS,
ALBARANES_PROVEEDOR.FECHA_ALTA,
ALBARANES_PROVEEDOR.FECHA_MODIFICACION,
ALBARANES_PROVEEDOR.USUARIO,
2008-07-15 18:09:26 +00:00
ALBARANES_PROVEEDOR.ID_FORMA_PAGO,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
FROM
ALBARANES_PROVEEDOR
2008-01-23 20:14:11 +00:00
INNER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR)
2007-06-11 15:29:06 +00:00
LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_PEDIDO)
LEFT OUTER JOIN FACTURAS_PROVEEDOR ON (FACTURAS_PROVEEDOR.ID = ALBARANES_PROVEEDOR.ID_FACTURA)
2008-07-15 18:09:26 +00:00
LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN)
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = ALBARANES_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'ALBARANESPROVEEDOR'));
2007-06-11 15:29:06 +00:00
CREATE VIEW V_AGENTES(
ID,
ID_CATEGORIA,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
TELEFONO_1,
TELEFONO_2,
MOVIL_1,
MOVIL_2,
FAX,
EMAIL_1,
EMAIL_2,
PAGINA_WEB,
NOTAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_EMPRESA,
REFERENCIA)
AS
SELECT V_CONTACTOS.ID,
V_CONTACTOS.ID_CATEGORIA,
V_CONTACTOS.NIF_CIF,
V_CONTACTOS.NOMBRE,
V_CONTACTOS.CALLE,
V_CONTACTOS.POBLACION,
V_CONTACTOS.PROVINCIA,
V_CONTACTOS.CODIGO_POSTAL,
V_CONTACTOS.TELEFONO_1,
V_CONTACTOS.TELEFONO_2,
V_CONTACTOS.MOVIL_1,
V_CONTACTOS.MOVIL_2,
V_CONTACTOS.FAX,
V_CONTACTOS.EMAIL_1,
V_CONTACTOS.EMAIL_2,
V_CONTACTOS.PAGINA_WEB,
V_CONTACTOS.NOTAS,
V_CONTACTOS.FECHA_ALTA,
V_CONTACTOS.FECHA_MODIFICACION,
V_CONTACTOS.USUARIO,
V_CONTACTOS.ID_EMPRESA, V_CONTACTOS.REFERENCIA FROM
V_CONTACTOS
WHERE V_CONTACTOS.ID_CATEGORIA = 3;
CREATE VIEW V_REC_FAC_PRO(
ID_FACTURA,
NUM_RECIBOS)
AS
SELECT FACTURAS_PROVEEDOR.ID, COUNT(RECIBOS_PROVEEDOR.ID)
FROM FACTURAS_PROVEEDOR
LEFT JOIN RECIBOS_PROVEEDOR
ON (RECIBOS_PROVEEDOR.ID_FACTURA = FACTURAS_PROVEEDOR.ID)
GROUP BY FACTURAS_PROVEEDOR.ID;
CREATE VIEW V_REC_FAC_CLI(
ID_FACTURA,
NUM_RECIBOS)
AS
SELECT FACTURAS_CLIENTE.ID, COUNT(RECIBOS_CLIENTE.ID)
FROM FACTURAS_CLIENTE
LEFT JOIN RECIBOS_CLIENTE
ON (RECIBOS_CLIENTE.ID_FACTURA = FACTURAS_CLIENTE.ID)
GROUP BY FACTURAS_CLIENTE.ID;
CREATE VIEW V_REC_PRO_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_PROVEEDOR.ID,
CASE WHEN (COUNT(PAGOS_PROVEEDOR.ID_RECIBO)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(PAGOS_PROVEEDOR.ID_RECIBO), 2)=0) THEN 'DEVUELTO'
ELSE 'PAGADO'
END
FROM RECIBOS_PROVEEDOR
LEFT JOIN PAGOS_PROVEEDOR
ON (PAGOS_PROVEEDOR.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
GROUP BY RECIBOS_PROVEEDOR.ID;
CREATE VIEW V_REC_CLI_SITUACION(
ID_RECIBO,
SITUACION)
AS
SELECT RECIBOS_CLIENTE.ID,
CASE WHEN (COUNT(PAGOS_CLIENTE.ID_RECIBO)=0) THEN 'PENDIENTE'
WHEN (MOD(COUNT(PAGOS_CLIENTE.ID_RECIBO), 2)=0) THEN 'DEVUELTO'
ELSE 'COBRADO'
END
FROM RECIBOS_CLIENTE
LEFT JOIN PAGOS_CLIENTE
ON (PAGOS_CLIENTE.ID_RECIBO = RECIBOS_CLIENTE.ID)
GROUP BY RECIBOS_CLIENTE.ID;
2007-07-11 14:12:15 +00:00
CREATE VIEW V_REC_PRO_COMPENSADOS (
ID_RECIBO,
IMPORTE_TOTAL_COMPENSADO
) as
select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL
from RECIBOS_PROVEEDOR
where ID_RECIBO_COMPENSADO is not null
group by ID_RECIBO_COMPENSADO;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_RECIBOS_PROVEEDOR(
ID,
2007-07-11 14:12:15 +00:00
ID_RECIBO_COMPENSADO,
REFERENCIA_REC_COMPENSADO,
2007-06-11 15:29:06 +00:00
REFERENCIA,
REFERENCIA_PROVEEDOR,
SITUACION,
ID_FACTURA,
2007-06-19 17:12:00 +00:00
ID_REMESA,
REFERENCIA_REMESA,
2007-06-11 15:29:06 +00:00
FECHA_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
2007-07-04 15:44:12 +00:00
REFERENCIA_FACTURA_PROV,
2007-06-11 15:29:06 +00:00
FECHA_FACTURA,
FORMA_PAGO_FACTURA,
IMPORTE_FACTURA,
ID_EMPRESA,
ID_PROVEEDOR,
NOMBRE_PROVEEDOR,
NIF_CIF_PROVEEDOR,
ENTIDAD_PROVEEDOR,
SUCURSAL_PROVEEDOR,
DC_PROVEEDOR,
CUENTA_PROVEEDOR,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO)
AS
2007-07-11 14:12:15 +00:00
SELECT RECIBOS_PROVEEDOR.ID,
RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO,
RECIBO_COMPENSADO1.REFERENCIA,
RECIBOS_PROVEEDOR.REFERENCIA,
RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR,
CASE
WHEN RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO IS NULL
THEN V_REC_PRO_SITUACION.SITUACION
ELSE RECIBO_COMPENSADO2.SITUACION
END,
2007-06-11 15:29:06 +00:00
RECIBOS_PROVEEDOR.ID_FACTURA,
2007-06-19 17:12:00 +00:00
RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA,
2007-06-11 15:29:06 +00:00
RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION,
RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS,
2007-07-11 14:12:15 +00:00
COALESCE(RECIBOS_PROVEEDOR.IMPORTE, 0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS, 0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
2007-06-11 15:29:06 +00:00
2007-07-04 15:44:12 +00:00
FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA,
FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
2007-06-11 15:29:06 +00:00
FACTURAS_PROVEEDOR.ID_EMPRESA,
CONTACTOS.ID as ID_PROVEEDOR, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS_DATOS_BANCO.ENTIDAD,
CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA,
RECIBOS_PROVEEDOR.FECHA_ALTA,
RECIBOS_PROVEEDOR.FECHA_MODIFICACION,
RECIBOS_PROVEEDOR.USUARIO
2007-07-16 16:54:12 +00:00
FROM RECIBOS_PROVEEDOR
LEFT JOIN V_REC_PRO_SITUACION
ON (V_REC_PRO_SITUACION.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
2007-06-11 15:29:06 +00:00
LEFT JOIN FACTURAS_PROVEEDOR
ON (FACTURAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_PROVEEDOR.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_PROVEEDOR.ID_PROVEEDOR)
LEFT JOIN CONTACTOS_DATOS_BANCO
2007-06-19 17:12:00 +00:00
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
LEFT JOIN REMESAS_PROVEEDOR
2007-07-11 14:12:15 +00:00
ON (REMESAS_PROVEEDOR.ID = RECIBOS_PROVEEDOR.ID_REMESA)
LEFT JOIN V_REC_PRO_COMPENSADOS
ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
LEFT JOIN RECIBOS_PROVEEDOR RECIBO_COMPENSADO1
ON (RECIBO_COMPENSADO1.ID = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO)
LEFT JOIN V_REC_PRO_SITUACION RECIBO_COMPENSADO2
ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO);
2007-06-19 17:12:00 +00:00
2007-06-11 15:29:06 +00:00
2007-07-09 17:16:22 +00:00
CREATE VIEW V_REC_CLI_COMPENSADOS (
ID_RECIBO,
IMPORTE_TOTAL_COMPENSADO
) as
select ID_RECIBO_COMPENSADO, SUM((IMPORTE + OTROS_GASTOS)) as IMPORTE_TOTAL
from RECIBOS_CLIENTE
where ID_RECIBO_COMPENSADO is not null
group by ID_RECIBO_COMPENSADO;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_RECIBOS_CLIENTE(
2008-07-15 18:09:26 +00:00
ID,
ID_RECIBO_COMPENSADO,
REFERENCIA_REC_COMPENSADO,
REFERENCIA,
SITUACION,
ID_FACTURA,
ID_REMESA,
REFERENCIA_REMESA,
FECHA_EMISION,
FECHA_VENCIMIENTO,
DESCRIPCION,
OBSERVACIONES,
IMPORTE,
OTROS_GASTOS,
IMPORTE_TOTAL,
FECHA_FACTURA,
FORMA_PAGO_FACTURA,
IMPORTE_FACTURA,
ID_EMPRESA,
ID_CLIENTE,
NOMBRE_CLIENTE,
NIF_CIF_CLIENTE,
ENTIDAD_CLIENTE,
SUCURSAL_CLIENTE,
DC_CLIENTE,
CUENTA_CLIENTE,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
NUM_COPIAS)
AS
2007-07-09 17:16:22 +00:00
SELECT RECIBOS_CLIENTE.ID,
RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO,
RECIBO_COMPENSADO1.REFERENCIA,
RECIBOS_CLIENTE.REFERENCIA,
CASE
WHEN RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO IS NULL
THEN V_REC_CLI_SITUACION.SITUACION
ELSE RECIBO_COMPENSADO2.SITUACION
END,
2007-06-11 15:29:06 +00:00
RECIBOS_CLIENTE.ID_FACTURA,
RECIBOS_CLIENTE.ID_REMESA, REMESAS_CLIENTE.REFERENCIA as REFERENCIA_REMESA,
RECIBOS_CLIENTE.FECHA_EMISION, RECIBOS_CLIENTE.FECHA_VENCIMIENTO, RECIBOS_CLIENTE.DESCRIPCION,
RECIBOS_CLIENTE.OBSERVACIONES, RECIBOS_CLIENTE.IMPORTE, RECIBOS_CLIENTE.OTROS_GASTOS,
2007-07-09 17:16:22 +00:00
COALESCE(RECIBOS_CLIENTE.IMPORTE, 0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS, 0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
2007-06-11 15:29:06 +00:00
FACTURAS_CLIENTE.FECHA_FACTURA, FORMAS_PAGO.DESCRIPCION, FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.ID_EMPRESA,
CONTACTOS.ID as ID_CLIENTE, CONTACTOS.NOMBRE, CONTACTOS.NIF_CIF, CONTACTOS_DATOS_BANCO.ENTIDAD,
CONTACTOS_DATOS_BANCO.SUCURSAL, CONTACTOS_DATOS_BANCO.DC, CONTACTOS_DATOS_BANCO.CUENTA,
RECIBOS_CLIENTE.FECHA_ALTA,
RECIBOS_CLIENTE.FECHA_MODIFICACION,
2008-07-15 18:09:26 +00:00
RECIBOS_CLIENTE.USUARIO,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
2007-07-16 16:54:12 +00:00
FROM RECIBOS_CLIENTE
LEFT JOIN V_REC_CLI_SITUACION
ON (V_REC_CLI_SITUACION.ID_RECIBO = RECIBOS_CLIENTE.ID)
2007-06-11 15:29:06 +00:00
LEFT JOIN FACTURAS_CLIENTE
ON (FACTURAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_FACTURA)
LEFT JOIN FORMAS_PAGO
ON (FORMAS_PAGO.ID = FACTURAS_CLIENTE.ID_FORMA_PAGO)
LEFT JOIN CONTACTOS
ON (CONTACTOS.ID = FACTURAS_CLIENTE.ID_CLIENTE)
LEFT JOIN CONTACTOS_DATOS_BANCO
ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
LEFT JOIN REMESAS_CLIENTE
2007-07-09 17:16:22 +00:00
ON (REMESAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_REMESA)
LEFT JOIN V_REC_CLI_COMPENSADOS
ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID)
LEFT JOIN RECIBOS_CLIENTE RECIBO_COMPENSADO1
ON (RECIBO_COMPENSADO1.ID = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO)
LEFT JOIN V_REC_CLI_SITUACION RECIBO_COMPENSADO2
2008-07-15 18:09:26 +00:00
ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO)
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = RECIBOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'RECIBOSCLIENTE'));
2007-07-09 17:16:22 +00:00
CREATE VIEW V_REMESAS_CLIENTE(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
FECHA_REMESA,
DESCRIPCION,
ID_DATOS_BANCO,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
NOMBRE,
ENTIDAD,
SUCURSAL,
DC,
CUENTA,
SUFIJO_N19,
SUFIJO_N58,
NUM_COPIAS,
IMPORTE_TOTAL)
AS
2007-07-09 17:16:22 +00:00
SELECT
REMESAS_CLIENTE.ID,
REMESAS_CLIENTE.ID_EMPRESA,
REMESAS_CLIENTE.REFERENCIA,
2007-07-18 17:06:04 +00:00
REMESAS_CLIENTE.TIPO,
2007-07-09 17:16:22 +00:00
REMESAS_CLIENTE.FECHA_REMESA,
REMESAS_CLIENTE.DESCRIPCION,
REMESAS_CLIENTE.ID_DATOS_BANCO,
REMESAS_CLIENTE.FECHA_ALTA,
REMESAS_CLIENTE.FECHA_MODIFICACION,
REMESAS_CLIENTE.USUARIO,
EMPRESAS_DATOS_BANCO.NOMBRE,
EMPRESAS_DATOS_BANCO.ENTIDAD,
EMPRESAS_DATOS_BANCO.SUCURSAL,
EMPRESAS_DATOS_BANCO.DC,
EMPRESAS_DATOS_BANCO.CUENTA,
EMPRESAS_DATOS_BANCO.SUFIJO_N19,
EMPRESAS_DATOS_BANCO.SUFIJO_N58,
2008-07-15 18:09:26 +00:00
IMPRESIONES.NUM_COPIAS,
2007-07-09 17:16:22 +00:00
SUM(COALESCE(RECIBOS_CLIENTE.IMPORTE,0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS,0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL
FROM
REMESAS_CLIENTE
LEFT OUTER JOIN EMPRESAS_DATOS_BANCO ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_CLIENTE.ID_DATOS_BANCO)
LEFT OUTER JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID_REMESA = REMESAS_CLIENTE.ID)
LEFT OUTER JOIN V_REC_CLI_COMPENSADOS ON (V_REC_CLI_COMPENSADOS.ID_RECIBO = RECIBOS_CLIENTE.ID)
2008-07-15 18:09:26 +00:00
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = REMESAS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'REMESASCLIENTE'))
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18;
2007-07-09 17:16:22 +00:00
2007-06-11 15:29:06 +00:00
CREATE VIEW V_REC_FAC_PRO_PAGADOS(
ID_FACTURA,
NUM_REC_PAGADOS)
AS
2007-07-16 16:54:12 +00:00
SELECT RECIBOS_PROVEEDOR.ID_FACTURA, COUNT(V_REC_PRO_SITUACION.ID_RECIBO)
FROM V_REC_PRO_SITUACION LEFT JOIN RECIBOS_PROVEEDOR ON
(RECIBOS_PROVEEDOR.ID = V_REC_PRO_SITUACION.ID_RECIBO)
WHERE (V_REC_PRO_SITUACION.SITUACION = 'PAGADO')
GROUP BY RECIBOS_PROVEEDOR.ID_FACTURA
;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_REC_FAC_CLI_COBRADOS(
ID_FACTURA,
NUM_REC_COBRADOS)
AS
2007-07-16 16:54:12 +00:00
SELECT RECIBOS_CLIENTE.ID_FACTURA, COUNT(V_REC_CLI_SITUACION.ID_RECIBO)
FROM V_REC_CLI_SITUACION LEFT JOIN RECIBOS_CLIENTE ON
(RECIBOS_CLIENTE.ID = V_REC_CLI_SITUACION.ID_RECIBO)
WHERE (V_REC_CLI_SITUACION.SITUACION = 'COBRADO')
GROUP BY RECIBOS_CLIENTE.ID_FACTURA
;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_FAC_PRO_SITUACION(
ID_FACTURA,
SITUACION)
AS
2007-07-16 16:54:12 +00:00
SELECT ID_FACTURA,
2007-06-11 15:29:06 +00:00
CASE
2007-07-16 16:54:12 +00:00
WHEN ((SUM(NUM_RECIBOS) = 0)
OR (SUM(NUM_REC_PAGADOS) = 0)) THEN 'PENDIENTE'
WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_PAGADOS)) THEN 'PAGADA'
2007-06-11 15:29:06 +00:00
ELSE 'PARCIALMENTE PAGADA'
2007-07-16 16:54:12 +00:00
END AS SITUACION
FROM
(
SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_PAGADOS
FROM V_REC_FAC_PRO
UNION ALL
SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_PAGADOS
FROM V_REC_FAC_PRO_PAGADOS
)
GROUP BY ID_FACTURA;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_FAC_CLI_SITUACION(
ID_FACTURA,
SITUACION)
AS
2007-07-16 16:54:12 +00:00
SELECT ID_FACTURA,
2007-06-11 15:29:06 +00:00
CASE
2007-07-16 16:54:12 +00:00
WHEN ((SUM(NUM_RECIBOS) = 0)
OR (SUM(NUM_REC_COBRADOS) = 0)) THEN 'PENDIENTE'
WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_COBRADOS)) THEN 'PAGADA'
2007-06-11 15:29:06 +00:00
ELSE 'PARCIALMENTE PAGADA'
2007-07-16 16:54:12 +00:00
END AS SITUACION
FROM
(
SELECT ID_FACTURA, NUM_RECIBOS, 0 AS NUM_REC_COBRADOS
FROM V_REC_FAC_CLI
UNION ALL
SELECT ID_FACTURA, 0 AS NUM_RECIBOS, NUM_REC_COBRADOS
FROM V_REC_FAC_CLI_COBRADOS
)
GROUP BY ID_FACTURA;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_FACTURAS_PROVEEDOR(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
REFERENCIA_PROVEEDOR,
FECHA_FACTURA,
SITUACION,
BASE_IMPONIBLE,
DESCUENTO,
IMPORTE_DESCUENTO,
IVA,
IMPORTE_IVA,
RE,
IMPORTE_RE,
IMPORTE_TOTAL,
OBSERVACIONES,
ID_PROVEEDOR,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
IMPORTE_NETO,
IMPORTE_PORTE,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT FACTURAS_PROVEEDOR.ID,
FACTURAS_PROVEEDOR.ID_EMPRESA,
FACTURAS_PROVEEDOR.REFERENCIA,
CASE WHEN (FACTURAS_PROVEEDOR.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO,
FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR,
FACTURAS_PROVEEDOR.FECHA_FACTURA,
V_FAC_PRO_SITUACION.SITUACION,
FACTURAS_PROVEEDOR.BASE_IMPONIBLE,
FACTURAS_PROVEEDOR.DESCUENTO,
FACTURAS_PROVEEDOR.IMPORTE_DESCUENTO,
FACTURAS_PROVEEDOR.IVA,
FACTURAS_PROVEEDOR.IMPORTE_IVA,
FACTURAS_PROVEEDOR.RE,
FACTURAS_PROVEEDOR.IMPORTE_RE,
FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
FACTURAS_PROVEEDOR.OBSERVACIONES,
FACTURAS_PROVEEDOR.ID_PROVEEDOR,
FACTURAS_PROVEEDOR.NIF_CIF,
FACTURAS_PROVEEDOR.NOMBRE,
FACTURAS_PROVEEDOR.CALLE,
FACTURAS_PROVEEDOR.POBLACION,
FACTURAS_PROVEEDOR.PROVINCIA,
FACTURAS_PROVEEDOR.CODIGO_POSTAL,
FACTURAS_PROVEEDOR.FECHA_ALTA,
FACTURAS_PROVEEDOR.FECHA_MODIFICACION,
FACTURAS_PROVEEDOR.USUARIO,
FACTURAS_PROVEEDOR.ID_FORMA_PAGO,
FACTURAS_PROVEEDOR.RECARGO_EQUIVALENCIA,
FACTURAS_PROVEEDOR.ID_TIPO_IVA,
FACTURAS_PROVEEDOR.IMPORTE_NETO,
2008-07-15 18:09:26 +00:00
FACTURAS_PROVEEDOR.IMPORTE_PORTE,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
FROM V_FAC_PRO_SITUACION
LEFT JOIN FACTURAS_PROVEEDOR
ON (FACTURAS_PROVEEDOR.ID = V_FAC_PRO_SITUACION.ID_FACTURA)
LEFT JOIN PROVEEDORES_DATOS
2008-07-15 18:09:26 +00:00
ON (PROVEEDORES_DATOS.ID_PROVEEDOR = FACTURAS_PROVEEDOR.ID_PROVEEDOR)
LEFT JOIN IMPRESIONES
ON ((IMPRESIONES.ID_TABLA = FACTURAS_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'FACTURASPROVEEDOR'));
2007-06-11 15:29:06 +00:00
CREATE VIEW V_FACTURAS_CLIENTE(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
ID_COMISION_LIQUIDADA,
FECHA_FACTURA,
SITUACION,
BASE_IMPONIBLE,
DESCUENTO,
IMPORTE_DESCUENTO,
IVA,
IMPORTE_IVA,
RE,
IMPORTE_RE,
IMPORTE_TOTAL,
OBSERVACIONES,
ID_CLIENTE,
NIF_CIF,
NOMBRE,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
RECARGO_EQUIVALENCIA,
ID_TIPO_IVA,
IMPORTE_NETO,
IMPORTE_PORTE,
ID_AGENTE,
REFERENCIA_COMISION,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT FACTURAS_CLIENTE.ID,
FACTURAS_CLIENTE.ID_EMPRESA,
FACTURAS_CLIENTE.REFERENCIA,
CASE WHEN (FACTURAS_CLIENTE.IMPORTE_TOTAL < 0) THEN 'A' ELSE 'F' END AS TIPO,
FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
FACTURAS_CLIENTE.FECHA_FACTURA,
V_FAC_CLI_SITUACION.SITUACION,
FACTURAS_CLIENTE.BASE_IMPONIBLE,
FACTURAS_CLIENTE.DESCUENTO,
FACTURAS_CLIENTE.IMPORTE_DESCUENTO,
FACTURAS_CLIENTE.IVA,
FACTURAS_CLIENTE.IMPORTE_IVA,
FACTURAS_CLIENTE.RE,
FACTURAS_CLIENTE.IMPORTE_RE,
FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.OBSERVACIONES,
FACTURAS_CLIENTE.ID_CLIENTE,
FACTURAS_CLIENTE.NIF_CIF,
FACTURAS_CLIENTE.NOMBRE,
FACTURAS_CLIENTE.CALLE,
FACTURAS_CLIENTE.POBLACION,
FACTURAS_CLIENTE.PROVINCIA,
FACTURAS_CLIENTE.CODIGO_POSTAL,
FACTURAS_CLIENTE.FECHA_ALTA,
FACTURAS_CLIENTE.FECHA_MODIFICACION,
FACTURAS_CLIENTE.USUARIO,
FACTURAS_CLIENTE.ID_FORMA_PAGO,
FACTURAS_CLIENTE.RECARGO_EQUIVALENCIA,
FACTURAS_CLIENTE.ID_TIPO_IVA,
FACTURAS_CLIENTE.IMPORTE_NETO,
FACTURAS_CLIENTE.IMPORTE_PORTE,
CLIENTES_DATOS.ID_AGENTE,
2008-07-15 18:09:26 +00:00
COMISIONES_LIQUIDADAS.REFERENCIA,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
FROM V_FAC_CLI_SITUACION
LEFT JOIN FACTURAS_CLIENTE
ON (FACTURAS_CLIENTE.ID = V_FAC_CLI_SITUACION.ID_FACTURA)
LEFT JOIN COMISIONES_LIQUIDADAS
ON (COMISIONES_LIQUIDADAS.ID = FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA)
LEFT JOIN CLIENTES_DATOS
2008-07-15 18:09:26 +00:00
ON (CLIENTES_DATOS.ID_CLIENTE = FACTURAS_CLIENTE.ID_CLIENTE)
LEFT JOIN IMPRESIONES
ON ((IMPRESIONES.ID_TABLA = FACTURAS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'FACTURASCLIENTE'));
2007-06-11 15:29:06 +00:00
CREATE VIEW V_AGENTES_COMISIONES_DET_FAC(
ID_FACTURA,
ID_EMPRESA,
FECHA,
REFERENCIA,
SITUACION,
ID_COMISION_LIQUIDADA,
ID_CLIENTE,
ID_AGENTE,
ID_ARTICULO,
ID_PROVEEDOR,
IMPORTE_TOTAL,
COMISION,
IMPORTE_COMISION)
AS
SELECT V_FACTURAS_CLIENTE.ID,
V_FACTURAS_CLIENTE.ID_EMPRESA,
V_FACTURAS_CLIENTE.FECHA_FACTURA,
V_FACTURAS_CLIENTE.REFERENCIA,
V_FACTURAS_CLIENTE.SITUACION,
V_FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
V_FACTURAS_CLIENTE.ID_CLIENTE,
V_FACTURAS_CLIENTE.ID_AGENTE,
FACTURAS_CLIENTE_DETALLES.ID_ARTICULO, ARTICULOS.ID_PROVEEDOR,
FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL, COALESCE(AGENTES_COMISIONES.COMISION, 0) as COMISION,
(CASE COALESCE(AGENTES_COMISIONES.COMISION, 0) WHEN 0 THEN 0
ELSE ((FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL * AGENTES_COMISIONES.COMISION)/100) END) as IMPORTE_COMISION
FROM V_FACTURAS_CLIENTE
LEFT JOIN FACTURAS_CLIENTE_DETALLES ON (FACTURAS_CLIENTE_DETALLES.ID_FACTURA = V_FACTURAS_CLIENTE.ID)
LEFT JOIN ARTICULOS ON (ARTICULOS.ID = FACTURAS_CLIENTE_DETALLES.ID_ARTICULO)
LEFT JOIN AGENTES_COMISIONES ON ((AGENTES_COMISIONES.ID_AGENTE = V_FACTURAS_CLIENTE.ID_AGENTE)
AND (AGENTES_COMISIONES.ID_PROVEEDOR = ARTICULOS.ID_PROVEEDOR))
2007-07-03 18:57:02 +00:00
WHERE (FACTURAS_CLIENTE_DETALLES.TIPO_DETALLE = 'Concepto')
AND (ARTICULOS.ID is not null)
AND (ARTICULOS.COMISIONABLE = 1);
2007-06-11 15:29:06 +00:00
/* Situaci<63> n de los albaranes de cliente */
CREATE VIEW V_ALB_CLI_SITUACION(
ID,
SITUACION)
AS
SELECT ALBARANES_CLIENTE.ID,
case when (FECHA_RECEPCION is not null) then 'SERVIDO'
when (FECHA_ENVIO is null) then 'PENDIENTE'
when (FECHA_ENVIO <= current_date) then 'ENVIADO'
when (FECHA_ENVIO > current_date) then 'PENDIENTE'
else 'N/A'
end as SITUACION
FROM ALBARANES_CLIENTE;
2008-07-15 18:09:26 +00:00
2007-06-11 15:29:06 +00:00
CREATE VIEW V_ALBARANES_CLIENTE(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
ID_CLIENTE,
NOMBRE,
FECHA_ALBARAN,
REFERENCIA,
REFERENCIA_CLIENTE,
TIPO,
SITUACION,
ID_ALMACEN,
NOMBRE_ALMACEN,
ID_PEDIDO,
REF_PEDIDO,
ID_FACTURA,
REF_FACTURA,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_FORMA_PAGO,
FECHA_PREVISTA_ENVIO,
FECHA_ENVIO,
FECHA_RECEPCION,
ID_AGENTE,
AGENTE,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT
ALBARANES_CLIENTE.ID,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.ID_CLIENTE,
2008-01-21 17:22:45 +00:00
CLIENTES.NOMBRE,
2007-06-11 15:29:06 +00:00
ALBARANES_CLIENTE.FECHA_ALBARAN,
ALBARANES_CLIENTE.REFERENCIA,
2007-06-22 13:30:16 +00:00
ALBARANES_CLIENTE.REFERENCIA_CLIENTE,
2008-01-23 20:14:11 +00:00
ALBARANES_CLIENTE.TIPO,
2007-06-11 15:29:06 +00:00
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.ID_ALMACEN,
ALMACENES.NOMBRE AS NOMBRE_ALMACEN,
ALBARANES_CLIENTE.ID_PEDIDO,
PEDIDOS_CLIENTE.REFERENCIA AS REF_PEDIDO,
ALBARANES_CLIENTE.ID_FACTURA,
FACTURAS_CLIENTE.REFERENCIA AS REF_FACTURA,
ALBARANES_CLIENTE.CALLE,
ALBARANES_CLIENTE.CODIGO_POSTAL,
ALBARANES_CLIENTE.POBLACION,
ALBARANES_CLIENTE.PROVINCIA,
ALBARANES_CLIENTE.PERSONA_CONTACTO,
ALBARANES_CLIENTE.TELEFONO,
ALBARANES_CLIENTE.IMPORTE_NETO,
ALBARANES_CLIENTE.IMPORTE_PORTE,
ALBARANES_CLIENTE.DESCUENTO,
ALBARANES_CLIENTE.IMPORTE_DESCUENTO,
ALBARANES_CLIENTE.BASE_IMPONIBLE,
ALBARANES_CLIENTE.IVA,
ALBARANES_CLIENTE.IMPORTE_IVA,
ALBARANES_CLIENTE.IMPORTE_TOTAL,
ALBARANES_CLIENTE.OBSERVACIONES,
ALBARANES_CLIENTE.INCIDENCIAS,
ALBARANES_CLIENTE.INCIDENCIAS_ACTIVAS,
ALBARANES_CLIENTE.FECHA_ALTA,
ALBARANES_CLIENTE.FECHA_MODIFICACION,
ALBARANES_CLIENTE.USUARIO,
ALBARANES_CLIENTE.ID_FORMA_PAGO,
ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.FECHA_ENVIO,
2008-01-21 17:22:45 +00:00
ALBARANES_CLIENTE.FECHA_RECEPCION,
CLIENTES_DATOS.ID_AGENTE,
2008-07-15 18:09:26 +00:00
AGENTES.NOMBRE,
IMPRESIONES.NUM_COPIAS
2008-01-21 17:22:45 +00:00
2007-06-11 15:29:06 +00:00
FROM
ALBARANES_CLIENTE
2008-01-23 20:14:11 +00:00
INNER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID)
INNER JOIN CONTACTOS CLIENTES ON (CLIENTES.ID = ALBARANES_CLIENTE.ID_CLIENTE)
2008-01-21 17:22:45 +00:00
LEFT OUTER JOIN CLIENTES_DATOS ON (CLIENTES_DATOS.ID_CLIENTE = ALBARANES_CLIENTE.ID_CLIENTE)
LEFT OUTER JOIN CONTACTOS AGENTES ON (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
2007-06-11 15:29:06 +00:00
LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = ALBARANES_CLIENTE.ID_PEDIDO)
LEFT OUTER JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = ALBARANES_CLIENTE.ID_FACTURA)
2008-07-15 18:09:26 +00:00
LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN)
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = ALBARANES_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'ALBARANESCLIENTE'));
2007-06-11 15:29:06 +00:00
/*Agrupa los art<72> culos de un mismo albar<61> n (ya que en un albar<61> n puede existir varias lineas con el mismo art<72> culo).
Para cada art<72> culo de albar<61> n le ponemos el pedido con el que esta asociado, la situacion y el almac<61> n de donde sali<6C> .
Se quitan todos los art<72> culos que no tengamos en cat<61> logo (ID_ARTICULO nulo, lineas de detalle libres) -> esta premisa la cambiamos para que
no se falsee la situaci<63> n de los pedidos, asi pues todo articulo que no este en el cat<61> logo lo pondremos con ID_ARTICULO 0.
Se quitan tambi<62> n aquellos que no se<73> n inventariables -> esta premisa falsear<61> a la situaci<63> n de los pedidos*/
CREATE VIEW V_ALB_CLI_DETALLES(
ID_ALBARAN,
ID_PEDIDO,
SITUACION,
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
2008-02-04 16:49:36 +00:00
ALBARANES_CLIENTE_DETALLES.ID_PEDIDO,
2007-06-11 15:29:06 +00:00
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.ID_ALMACEN,
COALESCE(ALBARANES_CLIENTE_DETALLES.ID_ARTICULO, 0),
SUM(COALESCE(ALBARANES_CLIENTE_DETALLES.CANTIDAD, 0))
FROM ALBARANES_CLIENTE_DETALLES
2008-01-23 20:14:11 +00:00
INNER JOIN ALBARANES_CLIENTE
2007-06-11 15:29:06 +00:00
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID)
2008-01-23 20:14:11 +00:00
INNER JOIN V_ALB_CLI_SITUACION
2007-06-11 15:29:06 +00:00
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.ID)
/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro cat<61> logo con el fin de no falsear la situaci<63> n de los pedidos
2007-07-18 11:37:39 +00:00
LEFT JOIN ARTICULOS
ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID)
2007-06-11 15:29:06 +00:00
WHERE (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO is not null)
AND (ARTICULOS.INVENTARIABLE = 1)
*/
group BY ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
2008-02-04 16:49:36 +00:00
ALBARANES_CLIENTE_DETALLES.ID_PEDIDO,
2007-06-11 15:29:06 +00:00
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.ID_ALMACEN,
ALBARANES_CLIENTE_DETALLES.ID_ARTICULO;
/*Agrupa los art<72> culos de un mismo pedido (ya que en un pedido puede existir varias lineas con el mismo art<72> culo).
Se quitan todos los art<72> culos que no tengamos en cat<61> logo (ID_ARTICULO nulo, lineas de detalle libres) -> esta premisa la cambiamos para que
no se falsee la situaci<63> n de los pedidos, asi pues todo articulo que no este en el cat<61> logo lo pondremos con ID_ARTICULO 0.
Se quitan tambi<62> n aquellos que no se<73> n inventariables -> esta premisa nos falsear<61> a la situacion de los pedidos*/
CREATE VIEW V_PED_CLI_DETALLES(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD)
AS
SELECT PEDIDOS_CLIENTE_DETALLES.ID_PEDIDO,
COALESCE(PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO, 0),
SUM(COALESCE(PEDIDOS_CLIENTE_DETALLES.CANTIDAD, 0)) AS CANTIDAD
FROM PEDIDOS_CLIENTE_DETALLES
2007-07-18 11:37:39 +00:00
/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro cat<61> logo con el fin de no falsear la situaci<63> n de los pedidos
2007-06-11 15:29:06 +00:00
LEFT JOIN ARTICULOS
ON (PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID)
WHERE (PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO is not null)
AND (ARTICULOS.INVENTARIABLE = 1)
*/
GROUP BY PEDIDOS_CLIENTE_DETALLES.ID_PEDIDO,
PEDIDOS_CLIENTE_DETALLES.ID_ARTICULO;
/*Agrupa todos los art<72> culos de un pedido por situacion (a partir de albaranes de cliente) de cada uno de los pedidos asociados en los albaranes existentes*/
/*No le ponemos el almacen donde sali<6C> o va a salir ya que un mismo pedido podr<64> a tener varios albaranes con distintos almacenes de origen*/
/*Aquellos articulos que no tengan ID_PEDIDO es porque el albar<61> n al que pertenecen no tiene pedido asociado por ello no los tendremos en cuenta*/
CREATE VIEW V_PED_CLI_ART_SITUACION(
ID_PEDIDO,
SITUACION,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_PEDIDO, SITUACION, ID_ARTICULO, SUM(CANTIDAD) AS CANTIDAD
FROM V_ALB_CLI_DETALLES
WHERE (ID_PEDIDO is not null)
GROUP BY ID_PEDIDO,
SITUACION,
ID_ARTICULO;
/*Nos desglosa las cantidades del art<72> culo*/
CREATE VIEW V_PED_CLI_ART_SITUACION_CANT(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD_RESERVADA,
CANTIDAD_ENVIADA,
CANTIDAD_SERVIDA)
AS
SELECT ID_PEDIDO, ID_ARTICULO,
COALESCE((CASE SITUACION when 'PENDIENTE' THEN CANTIDAD END), 0) as CANTIDAD_RESERVADA,
COALESCE((CASE SITUACION when 'ENVIADO' THEN CANTIDAD END), 0) as CANTIDAD_ENVIADA,
COALESCE((CASE SITUACION when 'SERVIDO' THEN CANTIDAD END), 0) as CANTIDAD_SERVIDA
FROM V_PED_CLI_ART_SITUACION;
/*Al igual que en la parte de proveedores, no hacemos LEFT JOIN entre V_PED_CLI_DETALLES y V_PED_CLI_ART_SITUACION_CANT,*/
/*porque por cada tupla de la primera repetir<69> a la consulta de la segunda disparando tiempos, por ello teniendo las*/
/*dos vistas ejecutadas hacemos una union obteniendo todos los art<72> culos del pedido, tanto recibidos como pendientes,*/
/*luego haremos la agrupaci<63> n sobre este resultado*/
CREATE VIEW V_PED_CLI_ARTICULOS_AUX(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD_PEDIDA,
CANTIDAD_RESERVADA,
CANTIDAD_ENVIADA,
CANTIDAD_SERVIDA)
AS
SELECT
V_PED_CLI_DETALLES.ID_PEDIDO,
V_PED_CLI_DETALLES.ID_ARTICULO,
V_PED_CLI_DETALLES.CANTIDAD AS CANTIDAD_PEDIDA,
0 AS CANTIDAD_RESERVADA,
0 AS CANTIDAD_ENVIADA,
0 AS CANTIDAD_SERVIDA
FROM V_PED_CLI_DETALLES
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT
V_PED_CLI_ART_SITUACION_CANT.ID_PEDIDO,
V_PED_CLI_ART_SITUACION_CANT.ID_ARTICULO,
NULL AS CANTIDAD_PEDIDA,
V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_RESERVADA AS CANTIDAD_RESERVADA,
V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_ENVIADA AS CANTIDAD_ENVIADA,
V_PED_CLI_ART_SITUACION_CANT.CANTIDAD_SERVIDA AS CANTIDAD_SERVIDA
FROM V_PED_CLI_ART_SITUACION_CANT;
/*A partir de la vista anterior obtenemos el estado de cada uno de los art<72> culos del pedido de cliente*/
/*Despreciamos aquellas tuplas cuya cantidad pedida sea null, porque son articulos a<> adidos en el albar<61> n que*/
/*no est<73> n en su pedido correspondiente por lo tanto no los tendremos en cuenta para saber si los articulos del*/
/*pedido se han recibido todos. De todas formas no tiene mucho sentido este caso*/
/*Esta vista nos determina el estado de cada uno de los art<72> culos del pedido de cliente*/
CREATE VIEW V_PED_CLI_ARTICULOS(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD_PEDIDA,
CANTIDAD_RESERVADA,
CANTIDAD_ENVIADA,
CANTIDAD_SERVIDA,
CANTIDAD_PENDIENTE)
AS
SELECT ID_PEDIDO,
ID_ARTICULO,
SUM(CANTIDAD_PEDIDA),
SUM(CANTIDAD_RESERVADA) as CANTIDAD_RESERVADA,
SUM(CANTIDAD_ENVIADA) as CANTIDAD_ENVIADA,
SUM(CANTIDAD_SERVIDA) as CANTIDAD_SERVIDA,
(SUM(CANTIDAD_PEDIDA) - (SUM(CANTIDAD_RESERVADA) +
SUM(CANTIDAD_ENVIADA) +
SUM(CANTIDAD_SERVIDA))) as CANTIDAD_PENDIENTE
FROM V_PED_CLI_ARTICULOS_AUX
GROUP BY ID_PEDIDO,
ID_ARTICULO
HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL;
2008-04-11 15:00:35 +00:00
/*Aqui tendremos todos los pedidos de cliente pendientes o en proceso*/
CREATE VIEW V_PED_CLI_PENDIENTES_PROCESO(
ID_PEDIDO)
AS
SELECT distinct V_PED_CLI_ARTICULOS.id_pedido
FROM V_PED_CLI_ARTICULOS
WHERE (V_PED_CLI_ARTICULOS.CANTIDAD_PEDIDA > V_PED_CLI_ARTICULOS.CANTIDAD_SERVIDA)
;
/*Aqui tendremos todos los pedidos de cliente que tienen algun albaran relacionado*/
CREATE VIEW V_PED_CLI_CON_ALBARANES(
ID_PEDIDO)
AS
SELECT distinct ID_PEDIDO
FROM (SELECT DISTINCT ALBARANES_CLIENTE_DETALLES.ID_PEDIDO, ALBARANES_CLIENTE_DETALLES.ID_ALBARAN
FROM ALBARANES_CLIENTE_DETALLES)
GROUP BY ID_PEDIDO
having COUNT(ID_ALBARAN) > 0
;
/*Aqui tendremos todos los pedidos de cliente en proceso*/
CREATE VIEW V_PED_CLI_PROCESO(
ID_PEDIDO)
AS
select v_ped_cli_pendientes_proceso.ID_PEDIDO
from v_ped_cli_pendientes_proceso
inner join v_ped_cli_con_albaranes on (v_ped_cli_con_albaranes.ID_PEDIDO = v_ped_cli_pendientes_proceso.ID_PEDIDO)
;
2008-02-04 16:49:36 +00:00
CREATE VIEW V_PED_CLI_ART_SIN_ALBARAN(
2008-05-29 13:58:49 +00:00
ID,
2008-02-04 16:49:36 +00:00
ID_PEDIDO,
ID_EMPRESA,
REFERENCIA_PEDIDO,
2008-05-29 13:58:49 +00:00
REFERENCIA_CLI_PEDIDO,
2008-02-04 16:49:36 +00:00
FECHA_PEDIDO,
FECHA_PREVISTA_PEDIDO,
ID_CLIENTE,
2008-05-29 13:58:49 +00:00
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
IVA,
ID_FORMA_PAGO,
2008-02-04 16:49:36 +00:00
CLIENTE,
2008-05-29 13:58:49 +00:00
ID_ARTICULO,
2008-02-04 16:49:36 +00:00
FAMILIA,
REFERENCIA,
REFERENCIA_PROVEEDOR,
DESCRIPCION,
CANTIDAD_PEDIDA,
CANTIDAD_RESERVADA,
CANTIDAD_ENVIADA,
CANTIDAD_SERVIDA,
2008-05-29 13:58:49 +00:00
CANTIDAD_PENDIENTE,
PRECIO_COSTE,
DESCUENTO,
PRECION_NETO)
2008-02-04 16:49:36 +00:00
AS
SELECT
2008-05-29 13:58:49 +00:00
V_PED_CLI_ARTICULOS.ID_PEDIDO || V_PED_CLI_ARTICULOS.ID_ARTICULO as ID, /*Para tener un ID unico sobre el que poder consultar en la sentencia de selecci<63> n del grid*/
2008-02-04 16:49:36 +00:00
V_PED_CLI_ARTICULOS.ID_PEDIDO,
PEDIDOS_CLIENTE.ID_EMPRESA,
PEDIDOS_CLIENTE.referencia,
2008-05-29 13:58:49 +00:00
PEDIDOS_CLIENTE.referencia_cliente,
2008-02-04 16:49:36 +00:00
PEDIDOS_CLIENTE.fecha_pedido,
PEDIDOS_CLIENTE.fecha_prevista_envio,
PEDIDOS_CLIENTE.id_cliente,
2008-05-29 13:58:49 +00:00
PEDIDOS_CLIENTE.CALLE,
PEDIDOS_CLIENTE.CODIGO_POSTAL,
PEDIDOS_CLIENTE.POBLACION,
PEDIDOS_CLIENTE.PROVINCIA,
PEDIDOS_CLIENTE.PERSONA_CONTACTO,
PEDIDOS_CLIENTE.TELEFONO,
PEDIDOS_CLIENTE.IVA,
PEDIDOS_CLIENTE.ID_FORMA_PAGO,
2008-02-04 16:49:36 +00:00
CONTACTOS.nombre,
V_PED_CLI_ARTICULOS.ID_ARTICULO,
articulos.familia,
articulos.referencia,
articulos.referencia_prov,
articulos.descripcion,
V_PED_CLI_ARTICULOS.CANTIDAD_PEDIDA,
V_PED_CLI_ARTICULOS.CANTIDAD_RESERVADA,
V_PED_CLI_ARTICULOS.CANTIDAD_ENVIADA,
V_PED_CLI_ARTICULOS.CANTIDAD_SERVIDA,
2008-05-29 13:58:49 +00:00
V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE,
ARTICULOS.PRECIO_COSTE,
CLIENTES_DTOS_PROVEEDORES.DESCUENTO,
(ARTICULOS.PRECIO_COSTE * CLIENTES_DTOS_PROVEEDORES.DESCUENTO)/100 as PRECIO_NETO
2008-02-04 16:49:36 +00:00
from V_PED_CLI_ARTICULOS
left join PEDIDOS_CLIENTE on (PEDIDOS_CLIENTE.id = V_PED_CLI_ARTICULOS.id_pedido)
left join CONTACTOS on (contactos.id = PEDIDOS_CLIENTE.id_cliente)
left join articulos on (articulos.id = V_PED_CLI_ARTICULOS.ID_ARTICULO)
2008-05-29 13:58:49 +00:00
LEFT OUTER JOIN CLIENTES_DTOS_PROVEEDORES
ON ((CLIENTES_DTOS_PROVEEDORES.ID_PROVEEDOR = ARTICULOS.ID_PROVEEDOR)
AND (CLIENTES_DTOS_PROVEEDORES.ID_CLIENTE = contactos.id))
2008-02-04 16:49:36 +00:00
where cantidad_pendiente > 0;
2007-06-11 15:29:06 +00:00
2008-04-11 15:00:35 +00:00
/*Aqui tendremos la situacion de todos los pedidos, por l<> gica de grupos*/
CREATE VIEW V_PED_CLI_SITUACION(
2007-06-11 15:29:06 +00:00
ID_PEDIDO,
SITUACION)
AS
2008-04-11 15:00:35 +00:00
select id_pedido,
case when sum(enpro) = 3 then 'EN PROCESO'
when sum(enpro) = 2 then 'PENDIENTE'
when sum(enpro) = 1 then 'SERVIDO'
end
from
(
select id as id_pedido, 1 as ser, 1 as pend, 1 as enpro
from pedidos_cliente
2007-06-11 15:29:06 +00:00
2008-04-11 15:00:35 +00:00
union
select id_pedido, 0 as ser, 1 as pend, 1 as enpro
from v_ped_cli_pendientes_proceso
union
2007-06-11 15:29:06 +00:00
2008-04-11 15:00:35 +00:00
select id_pedido, 0 as ser, 0 as pend, 1 as enpro
from v_ped_cli_proceso
)
group by id_pedido
;
2007-06-11 15:29:06 +00:00
/*Agrupa los art<72> culos de un mismo albar<61> n (ya que en un albar<61> n puede existir varias lineas con el mismo art<72> culo).
Para cada art<72> culo de albar<61> n le ponemos el pedido con el que esta asociado y el almac<61> n donde se recibio.
Se quitan todos los art<72> culos que no tengamos en cat<61> logo (ID_ARTICULO nulo, lineas de detalle libres)-> esta premisa la cambiamos para que
no se falsee la situaci<63> n de los pedidos, asi pues todo articulo que no este en el cat<61> logo lo pondremos con ID_ARTICULO 0.
Se quitan tambi<62> n aquellos que no se<73> n inventariables -> esta premisa nos falsear<61> a la situaci<63> n de los pedidos */
CREATE VIEW V_ALB_PROV_DETALLES(
ID_ALBARAN,
ID_PEDIDO,
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN,
2008-02-04 19:22:13 +00:00
ALBARANES_PROVEEDOR_DETALLES.ID_PEDIDO,
2007-06-11 15:29:06 +00:00
ALBARANES_PROVEEDOR.ID_ALMACEN,
COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0),
SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD
FROM ALBARANES_PROVEEDOR_DETALLES
2008-01-23 20:14:11 +00:00
INNER JOIN ALBARANES_PROVEEDOR
2007-06-11 15:29:06 +00:00
ON (ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID)
2007-07-18 11:37:39 +00:00
/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro cat<61> logo con el fin de no falsear la situaci<63> n de los pedidos
2007-06-11 15:29:06 +00:00
LEFT JOIN ARTICULOS
ON (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID)
WHERE (ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO is not null)
AND (ARTICULOS.INVENTARIABLE = 1)
*/
GROUP BY ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN,
2008-02-04 19:22:13 +00:00
ALBARANES_PROVEEDOR_DETALLES.ID_PEDIDO,
2007-06-11 15:29:06 +00:00
ALBARANES_PROVEEDOR.ID_ALMACEN,
ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO;
/*Agrupa los art<72> culos de un mismo pedido (ya que en un pedido puede existir varias lineas con el mismo art<72> culo).
Para cada art<72> culo de pedido le ponemos el pedido con el que esta asociado y el almac<61> n donde ser<65> recibido.
Se quitan todos los art<72> culos que no tengamos en cat<61> logo (ID_ARTICULO nulo, lineas de detalle libres)-> esta premisa la cambiamos para que
no se falsee la situaci<63> n de los pedidos, asi pues todo articulo que no este en el cat<61> logo lo pondremos con ID_ARTICULO 0.
Se quitan tambi<62> n aquellos que no se<73> n inventariables -> esta premisa nos falsearia la situacion de los pedidos*/
CREATE VIEW V_PED_PROV_DETALLES(
ID_PEDIDO,
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO,
PEDIDOS_PROVEEDOR.ID_ALMACEN,
COALESCE(PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO, 0),
SUM(COALESCE(PEDIDOS_PROVEEDOR_DETALLES.CANTIDAD, 0))
FROM PEDIDOS_PROVEEDOR_DETALLES
LEFT JOIN PEDIDOS_PROVEEDOR
ON (PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID)
2007-07-18 11:37:39 +00:00
/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro cat<61> logo con el fin de no falsear la situaci<63> n de los pedidos
2007-06-11 15:29:06 +00:00
LEFT JOIN ARTICULOS
ON (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO = ARTICULOS.ID)
WHERE (PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO is not null)
AND (ARTICULOS.INVENTARIABLE = 1)
*/
GROUP BY PEDIDOS_PROVEEDOR_DETALLES.ID_PEDIDO,
PEDIDOS_PROVEEDOR.ID_ALMACEN,
PEDIDOS_PROVEEDOR_DETALLES.ID_ARTICULO;
/*Agrupa todos los art<72> culos recibidos (por albaranes de proveedor) de cada uno de los pedidos asociados en los albaranes existentes*/
/*No le ponemos el almacen donde se recibi<62> ya que un mismo pedido podr<64> a tener varios albaranes con distintos almacenes de destino*/
/*Aquellos articulos que no tengan ID_PEDIDO es porque el albar<61> n al que pertenecen no tiene pedido asociado por ello no los tendremos en cuenta*/
CREATE VIEW V_PED_PROV_ARTICULOS_RECIBIDOS(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_PEDIDO, ID_ARTICULO, SUM(CANTIDAD) AS CANTIDAD
FROM V_ALB_PROV_DETALLES
WHERE (ID_PEDIDO is not null)
GROUP BY ID_PEDIDO, ID_ARTICULO;
/*No hacemos LEFT JOIN entre V_PED_PROV_DETALLES y V_PED_PROV_ARTICULOS_RECIBIDOS, porque por cada tupla de la primera*/
/*repetir<69> a la consulta de la segunda disparando tiempos, por ello teniendo las dos vistas ejecutadas hacemos una union*/
/*obteniendo todos los art<72> culos del pedido, tanto recibidos como pendientes, luego haremos la agrupaci<63> n sobre este resultado*/
CREATE VIEW V_PED_PROV_ARTICULOS_AUX(
ID_PEDIDO,
ID_ARTICULO,
CANTIDAD_PEDIDA,
CANTIDAD_RECIBIDA)
AS
SELECT
V_PED_PROV_DETALLES.ID_PEDIDO,
V_PED_PROV_DETALLES.ID_ARTICULO,
V_PED_PROV_DETALLES.CANTIDAD AS CANTIDAD_PEDIDA,
0 as CANTIDAD_RECIBIDA
FROM V_PED_PROV_DETALLES
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT
V_PED_PROV_ARTICULOS_RECIBIDOS.ID_PEDIDO,
V_PED_PROV_ARTICULOS_RECIBIDOS.ID_ARTICULO,
NULL as CANTIDAD_PEDIDA,
V_PED_PROV_ARTICULOS_RECIBIDOS.CANTIDAD AS CANTIDAD_RECIBIDA
FROM V_PED_PROV_ARTICULOS_RECIBIDOS;
/*A partir de la vista anterior obtenemos el estado de cada uno de los art<72> culos del pedido de proveedor*/
/*Despreciamos aquellas tuplas cuya cantidad pedida sea null, porque son articulos a<> adidos en el albar<61> n que*/
/*no est<73> n en su pedido correspondiente por lo tanto no los tendremos en cuenta para saber si los articulos del*/
/*pedido se han recibido todos. De todas formas no tiene mucho sentido este caso*/
CREATE VIEW V_PED_PROV_ARTICULOS(
ID_PEDIDO,
2007-07-18 11:37:39 +00:00
/* ID_ALMACEN,*/
2007-06-11 15:29:06 +00:00
ID_ARTICULO,
CANTIDAD_PEDIDA,
CANTIDAD_RECIBIDA,
CANTIDAD_PENDIENTE)
AS
SELECT ID_PEDIDO,
2007-07-18 11:37:39 +00:00
/*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/
2007-06-11 15:29:06 +00:00
ID_ARTICULO,
SUM(CANTIDAD_PEDIDA) as CANTIDAD_PEDIDA,
SUM(CANTIDAD_RECIBIDA) as CANTIDAD_RECIBIDA,
SUM(CANTIDAD_PEDIDA) - SUM(CANTIDAD_RECIBIDA) as CANTIDAD_PENDIENTE
FROM V_PED_PROV_ARTICULOS_AUX
2007-07-18 11:37:39 +00:00
/*
2007-06-11 15:29:06 +00:00
LEFT JOIN PEDIDOS_PROVEEDOR
ON (PEDIDOS_PROVEEDOR.ID = V_PED_PROV_ARTICULOS_AUX.ID_PEDIDO)
2007-07-18 11:37:39 +00:00
*/
2007-06-11 15:29:06 +00:00
GROUP BY ID_PEDIDO,
2007-07-18 11:37:39 +00:00
/*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/
2007-06-11 15:29:06 +00:00
ID_ARTICULO
HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL;
/*POR COMENTAR*/
2008-05-28 17:19:59 +00:00
CREATE VIEW V_PED_PROV_PENDIENTES_PROCESO(
ID_PEDIDO)
2007-06-11 15:29:06 +00:00
AS
2008-05-28 17:19:59 +00:00
SELECT distinct V_PED_PROV_ARTICULOS.id_pedido
2007-07-18 17:06:04 +00:00
FROM V_PED_PROV_ARTICULOS
2008-05-28 17:19:59 +00:00
WHERE (V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA > V_PED_PROV_ARTICULOS.CANTIDAD_RECIBIDA)
;
2008-06-11 10:43:56 +00:00
CREATE VIEW V_PED_PROV_CON_ALBARANES(
ID_PEDIDO)
AS
SELECT distinct ID_PEDIDO
FROM (SELECT DISTINCT ALBARANES_PROVEEDOR_DETALLES.ID_PEDIDO, ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN
FROM ALBARANES_PROVEEDOR_DETALLES)
GROUP BY ID_PEDIDO
having COUNT(ID_ALBARAN) > 0;
;
2008-05-28 17:19:59 +00:00
CREATE VIEW V_PED_PROV_PROCESO(
ID_PEDIDO)
AS
select v_ped_prov_pendientes_proceso.ID_PEDIDO
from v_ped_prov_pendientes_proceso
inner join v_ped_prov_con_albaranes on (v_ped_prov_con_albaranes.ID_PEDIDO = v_ped_prov_pendientes_proceso.ID_PEDIDO)
;
CREATE VIEW V_PED_PROV_ART_SIN_ALBARAN(
ID,
ID_PEDIDO,
ID_EMPRESA,
REFERENCIA_PEDIDO,
FECHA_PEDIDO,
FECHA_CONFIRMACION,
ID_PROVEEDOR,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
IVA,
ID_FORMA_PAGO,
PROVEEDOR,
ID_ARTICULO,
FAMILIA,
REFERENCIA,
REFERENCIA_PROVEEDOR,
DESCRIPCION,
CANTIDAD_PEDIDA,
CANTIDAD_RECIBIDA,
CANTIDAD_PENDIENTE,
PRECIO_COSTE,
DESCUENTO,
PRECIO_NETO,
PRECIO_PORTE)
AS
SELECT
V_PED_PROV_ARTICULOS.ID_PEDIDO || V_PED_PROV_ARTICULOS.ID_ARTICULO as ID, /*Para tener un ID unico sobre el que poder consultar en la sentencia de selecci<63> n del grid*/
V_PED_PROV_ARTICULOS.ID_PEDIDO,
PEDIDOS_PROVEEDOR.ID_EMPRESA,
PEDIDOS_PROVEEDOR.referencia,
PEDIDOS_PROVEEDOR.fecha_pedido,
PEDIDOS_PROVEEDOR.fecha_confirmacion,
PEDIDOS_PROVEEDOR.id_proveedor,
PEDIDOS_PROVEEDOR.CALLE,
PEDIDOS_PROVEEDOR.CODIGO_POSTAL,
PEDIDOS_PROVEEDOR.POBLACION,
PEDIDOS_PROVEEDOR.PROVINCIA,
PEDIDOS_PROVEEDOR.PERSONA_CONTACTO,
PEDIDOS_PROVEEDOR.TELEFONO,
PEDIDOS_PROVEEDOR.IVA,
PEDIDOS_PROVEEDOR.ID_FORMA_PAGO,
CONTACTOS.nombre,
V_PED_PROV_ARTICULOS.ID_ARTICULO,
articulos.familia,
articulos.referencia,
articulos.referencia_prov,
articulos.descripcion,
V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA,
V_PED_PROV_ARTICULOS.CANTIDAD_RECIBIDA,
V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.PRECIO_PORTE
from V_PED_PROV_ARTICULOS
left join PEDIDOS_PROVEEDOR on (PEDIDOS_PROVEEDOR.id = V_PED_PROV_ARTICULOS.id_pedido)
left join CONTACTOS on (contactos.id = PEDIDOS_PROVEEDOR.id_proveedor)
left join articulos on (articulos.id = V_PED_PROV_ARTICULOS.ID_ARTICULO)
where cantidad_pendiente > 0;
CREATE VIEW V_PED_PROV_SITUACION(
ID_PEDIDO,
SITUACION)
AS
select id_pedido,
case when sum(enpro) = 3 then 'PARCIAL'
when sum(enpro) = 2 then 'PENDIENTE'
when sum(enpro) = 1 then 'RECIBIDO'
end as situacion
from
(
select id as id_pedido, 1 as ser, 1 as pend, 1 as enpro
from pedidos_proveedor
union
select id_pedido, 0 as ser, 1 as pend, 1 as enpro
from v_ped_prov_pendientes_proceso
union
select id_pedido, 0 as ser, 0 as pend, 1 as enpro
from v_ped_prov_proceso
)
group by id_pedido
;
2007-06-11 15:29:06 +00:00
CREATE VIEW V_PEDIDOS_CLIENTE(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
ID_CLIENTE,
NOMBRE,
REFERENCIA,
REFERENCIA_CLIENTE,
SITUACION,
FECHA_PEDIDO,
CALLE,
CODIGO_POSTAL,
POBLACION,
PROVINCIA,
PERSONA_CONTACTO,
TELEFONO,
OBSERVACIONES,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
IMPORTE_TOTAL,
ID_FORMA_PAGO,
REF_TIENDA_WEB,
FECHA_PREVISTA_ENVIO,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT
PEDIDOS_CLIENTE.ID,
PEDIDOS_CLIENTE.ID_EMPRESA,
PEDIDOS_CLIENTE.ID_CLIENTE,
V_CLIENTES.NOMBRE,
PEDIDOS_CLIENTE.REFERENCIA,
2007-06-22 13:30:16 +00:00
PEDIDOS_CLIENTE.REFERENCIA_CLIENTE,
2007-06-11 15:29:06 +00:00
V_PED_CLI_SITUACION.SITUACION,
PEDIDOS_CLIENTE.FECHA_PEDIDO,
PEDIDOS_CLIENTE.CALLE,
PEDIDOS_CLIENTE.CODIGO_POSTAL,
PEDIDOS_CLIENTE.POBLACION,
PEDIDOS_CLIENTE.PROVINCIA,
PEDIDOS_CLIENTE.PERSONA_CONTACTO,
PEDIDOS_CLIENTE.TELEFONO,
PEDIDOS_CLIENTE.OBSERVACIONES,
PEDIDOS_CLIENTE.INCIDENCIAS,
PEDIDOS_CLIENTE.INCIDENCIAS_ACTIVAS,
PEDIDOS_CLIENTE.FECHA_ALTA,
PEDIDOS_CLIENTE.FECHA_MODIFICACION,
PEDIDOS_CLIENTE.USUARIO,
PEDIDOS_CLIENTE.IMPORTE_NETO,
PEDIDOS_CLIENTE.IMPORTE_PORTE,
PEDIDOS_CLIENTE.DESCUENTO,
PEDIDOS_CLIENTE.IMPORTE_DESCUENTO,
PEDIDOS_CLIENTE.BASE_IMPONIBLE,
PEDIDOS_CLIENTE.IVA,
PEDIDOS_CLIENTE.IMPORTE_IVA,
PEDIDOS_CLIENTE.IMPORTE_TOTAL,
PEDIDOS_CLIENTE.ID_FORMA_PAGO,
PEDIDOS_CLIENTE.REF_TIENDA_WEB,
2008-07-15 18:09:26 +00:00
PEDIDOS_CLIENTE.FECHA_PREVISTA_ENVIO,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
FROM
2008-04-11 15:56:25 +00:00
V_PED_CLI_SITUACION
INNER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = V_PED_CLI_SITUACION.ID_PEDIDO)
2008-07-15 18:09:26 +00:00
INNER JOIN V_CLIENTES ON (PEDIDOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID)
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = PEDIDOS_CLIENTE.ID) AND (IMPRESIONES.TABLA = 'PEDIDOSCLIENTE'));
2007-06-11 15:29:06 +00:00
CREATE VIEW V_PEDIDOS_PROVEEDOR(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
ID_PROVEEDOR,
NOMBRE,
REFERENCIA,
SITUACION,
FECHA_ENVIO,
FECHA_PEDIDO,
FECHA_CONFIRMACION,
FECHA_ENTREGA,
ID_ALMACEN,
NOMBRE_ALMACEN,
OBSERVACIONES,
IMPORTE_TOTAL,
INCIDENCIAS,
INCIDENCIAS_ACTIVAS,
CALLE,
POBLACION,
PROVINCIA,
CODIGO_POSTAL,
PERSONA_CONTACTO,
TELEFONO,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
ID_PEDIDO_CLIENTE,
REF_PED_CLIENTE,
IMPORTE_NETO,
IMPORTE_PORTE,
DESCUENTO,
IMPORTE_DESCUENTO,
BASE_IMPONIBLE,
IVA,
IMPORTE_IVA,
ID_FORMA_PAGO,
NUM_COPIAS)
AS
2007-06-11 15:29:06 +00:00
SELECT
PEDIDOS_PROVEEDOR.ID,
PEDIDOS_PROVEEDOR.ID_EMPRESA,
PEDIDOS_PROVEEDOR.ID_PROVEEDOR,
V_PROVEEDORES.NOMBRE,
PEDIDOS_PROVEEDOR.REFERENCIA,
V_PED_PROV_SITUACION.SITUACION,
PEDIDOS_PROVEEDOR.FECHA_ENVIO,
PEDIDOS_PROVEEDOR.FECHA_PEDIDO,
PEDIDOS_PROVEEDOR.FECHA_CONFIRMACION,
PEDIDOS_PROVEEDOR.FECHA_ENTREGA,
PEDIDOS_PROVEEDOR.ID_ALMACEN,
ALMACENES.NOMBRE AS NOMBRE_ALMACEN,
PEDIDOS_PROVEEDOR.OBSERVACIONES,
PEDIDOS_PROVEEDOR.IMPORTE_TOTAL,
PEDIDOS_PROVEEDOR.INCIDENCIAS,
PEDIDOS_PROVEEDOR.INCIDENCIAS_ACTIVAS,
PEDIDOS_PROVEEDOR.CALLE,
PEDIDOS_PROVEEDOR.POBLACION,
PEDIDOS_PROVEEDOR.PROVINCIA,
PEDIDOS_PROVEEDOR.CODIGO_POSTAL,
PEDIDOS_PROVEEDOR.PERSONA_CONTACTO,
PEDIDOS_PROVEEDOR.TELEFONO,
PEDIDOS_PROVEEDOR.FECHA_ALTA,
PEDIDOS_PROVEEDOR.FECHA_MODIFICACION,
PEDIDOS_PROVEEDOR.USUARIO,
PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE,
PEDIDOS_CLIENTE.REFERENCIA AS REF_PED_CLIENTE,
PEDIDOS_PROVEEDOR.IMPORTE_NETO,
PEDIDOS_PROVEEDOR.IMPORTE_PORTE,
PEDIDOS_PROVEEDOR.DESCUENTO,
PEDIDOS_PROVEEDOR.IMPORTE_DESCUENTO,
PEDIDOS_PROVEEDOR.BASE_IMPONIBLE,
PEDIDOS_PROVEEDOR.IVA,
PEDIDOS_PROVEEDOR.IMPORTE_IVA,
2008-07-15 18:09:26 +00:00
PEDIDOS_PROVEEDOR.ID_FORMA_PAGO,
IMPRESIONES.NUM_COPIAS
2007-06-11 15:29:06 +00:00
FROM
PEDIDOS_PROVEEDOR
2008-01-23 20:14:11 +00:00
INNER JOIN V_PROVEEDORES ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.ID)
INNER JOIN V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID)
2007-06-11 15:29:06 +00:00
LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = PEDIDOS_PROVEEDOR.ID_ALMACEN)
2008-07-15 18:09:26 +00:00
LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE)
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = PEDIDOS_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'PEDIDOSPROVEEDOR'));
2007-06-11 15:29:06 +00:00
CREATE VIEW V_PED_CLI_ART_PEND_PEDIR_PROV(
ID_PEDIDO,
ID_ARTICULO,
CANT_PEDIDA_CLIENTE,
ID_PROVEEDOR,
CANT_PEDIDA_PROVEEDOR,
CANT_PENDIENTE_PEDIR)
AS
SELECT
V_PED_CLI_ARTICULOS.ID_PEDIDO,
V_PED_CLI_ARTICULOS.ID_ARTICULO,
V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE AS CANT_PED_CLI,
ARTICULOS.ID_PROVEEDOR,
SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) AS CANT_PED_PROV,
V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE - SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) AS CANT_PEND_PEDIR
FROM
V_PED_CLI_ARTICULOS
LEFT OUTER JOIN ARTICULOS ON (ARTICULOS.ID = V_PED_CLI_ARTICULOS.ID_ARTICULO)
LEFT OUTER JOIN PEDIDOS_PROVEEDOR ON (PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE = V_PED_CLI_ARTICULOS.ID_PEDIDO)
LEFT OUTER JOIN V_PED_PROV_ARTICULOS ON
((V_PED_PROV_ARTICULOS.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID) AND
(V_PED_PROV_ARTICULOS.ID_ARTICULO = V_PED_CLI_ARTICULOS.ID_ARTICULO))
WHERE (V_PED_CLI_ARTICULOS.ID_ARTICULO <> 0)
AND (ARTICULOS.INVENTARIABLE = 1)
GROUP BY
V_PED_CLI_ARTICULOS.ID_PEDIDO,
V_PED_CLI_ARTICULOS.ID_ARTICULO,
V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE,
ARTICULOS.ID_PROVEEDOR
HAVING
V_PED_CLI_ARTICULOS.CANTIDAD_PENDIENTE - SUM(COALESCE(V_PED_PROV_ARTICULOS.CANTIDAD_PEDIDA, 0)) > 0;
/*
INVENTARIO
*/
/*Todos los articulos reservados en almac<61> n para alg<6C> n albar<61> n (Pendiente))*/
CREATE VIEW V_INV_RESERVAS(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD)
FROM V_ALB_CLI_DETALLES
WHERE (ID_ALMACEN IS NOT NULL)
AND (SITUACION = 'PENDIENTE')
GROUP BY ID_ALMACEN, ID_ARTICULO;
/*Todas las salidas de articulos a partir de los movimientos libres realizados por el usuario*/
CREATE VIEW V_INV_SALIDAS_MOV(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD)
FROM MOVIMIENTOS
WHERE TIPO = 'S'
GROUP BY ID_ALMACEN, ID_ARTICULO;
/*Todas las salidas de articulos a partir de los albaranes de cliente*/
/*No tendremos en cuenta los albaranes que no tengan un almac<61> n origen, es decir que no se contabilizar<61> n*/
/*aquellos albaranes que se manden directamente al cliente sin pasar por almac<61> n*/
/*Ser<65> n salidas en el momento que el albar<61> n este enviado o servido, si esta pendiente estar<61> reservado*/
CREATE VIEW V_INV_SALIDAS_ALB(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD)
FROM V_ALB_CLI_DETALLES
WHERE (ID_ALMACEN IS NOT NULL)
AND (SITUACION in ('ENVIADO', 'SERVIDO'))
GROUP BY ID_ALMACEN, ID_ARTICULO;
/*Al igual que en las vistas de articulos de pedido de proveedor y cliente, es mucho m<> s r<> pido y mejor para este*/
/*caso una uni<6E> n y luego una agrupaci<63> n que un FULL OUTER JOIN*/
CREATE VIEW V_INV_SALIDAS_AUX(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN,
ID_ARTICULO,
CANTIDAD
FROM V_INV_SALIDAS_ALB
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT ID_ALMACEN,
ID_ARTICULO,
CANTIDAD
FROM V_INV_SALIDAS_MOV;
/*Todos los articulos pedidos a proveedor y que todav<61> a no he recibido, y que tienen un almac<61> n destino*/
CREATE VIEW V_INV_ENTRADAS_PENDIENTES(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
2007-07-18 11:37:39 +00:00
SELECT PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO, SUM(V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE)
2007-06-11 15:29:06 +00:00
FROM V_PED_PROV_ARTICULOS
2007-07-18 11:37:39 +00:00
LEFT JOIN PEDIDOS_PROVEEDOR
ON (PEDIDOS_PROVEEDOR.ID = V_PED_PROV_ARTICULOS.ID_PEDIDO)
WHERE (PEDIDOS_PROVEEDOR.ID_ALMACEN IS NOT NULL)
GROUP BY PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO;
2007-06-11 15:29:06 +00:00
/*Todas las salidas de almacen, bien por albar<61> n o por movimiento libre, a partir de la vista auxiliar anterior*/
CREATE VIEW V_INV_SALIDAS(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT
ID_ALMACEN,
ID_ARTICULO,
SUM(CANTIDAD) as CANTIDAD
FROM V_INV_SALIDAS_AUX
GROUP BY ID_ALMACEN,
ID_ARTICULO;
/*Todas las entradas de articulos a partir de los albaranes de proveedor*/
/*No tendremos en cuenta los albaranes que no tengan un almac<61> n destino, es decir que no se contabilizar<61> n*/
/*aquellos albaranes que se manden directamente al cliente*/
CREATE VIEW V_INV_ENTRADAS_ALB(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD)
FROM V_ALB_PROV_DETALLES
WHERE (ID_ALMACEN IS NOT NULL)
GROUP BY ID_ALMACEN, ID_ARTICULO;
/*Todas las entradas de articulos a partir de los movimientos libres realizados por el usuario*/
CREATE VIEW V_INV_ENTRADAS_MOV(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT ID_ALMACEN, ID_ARTICULO, SUM(CANTIDAD)
FROM MOVIMIENTOS
WHERE TIPO = 'E'
GROUP BY ID_ALMACEN, ID_ARTICULO;
/*Al igual que en las vistas de articulos de pedido de proveedor y cliente, es mucho m<> s r<> pido y mejor para este*/
/*caso una uni<6E> n y luego una agrupaci<63> n que un FULL OUTER JOIN*/
CREATE VIEW V_INV_ENTRADAS_AUX(
2007-06-13 10:00:42 +00:00
TIPO,
2007-06-11 15:29:06 +00:00
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
2007-06-13 10:00:42 +00:00
SELECT 'ALB',
ID_ALMACEN,
2007-06-11 15:29:06 +00:00
ID_ARTICULO,
CANTIDAD
FROM V_INV_ENTRADAS_ALB
2007-06-13 10:00:42 +00:00
UNION ALL
SELECT 'MOV',
ID_ALMACEN,
2007-06-11 15:29:06 +00:00
ID_ARTICULO,
CANTIDAD
FROM V_INV_ENTRADAS_MOV;
/*Todas las entradas en almacen, bien por albar<61> n o por movimiento libre, a partir de la vista auxiliar anterior*/
CREATE VIEW V_INV_ENTRADAS(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT
ID_ALMACEN,
ID_ARTICULO,
SUM(CANTIDAD) as CANTIDAD
FROM V_INV_ENTRADAS_AUX
GROUP BY ID_ALMACEN,
ID_ARTICULO;
/*Al igual que en las vistas de articulos de pedido de proveedor y cliente, es mucho m<> s r<> pido y mejor para este*/
/*caso una uni<6E> n y luego una agrupaci<63> n que un FULL OUTER JOIN*/
CREATE VIEW V_INV_STOCK_AUX(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD_ENTRADA,
CANTIDAD_SALIDA)
AS
SELECT ID_ALMACEN,
ID_ARTICULO,
CANTIDAD as CANTIDAD_ENTRADA,
0 as CANTIDAD_SALIDA
FROM V_INV_ENTRADAS
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT ID_ALMACEN,
ID_ARTICULO,
0 as CANTIDAD_ENTRADA,
CANTIDAD as CANTIDAD_SALIDA
FROM V_INV_SALIDAS;
/* Stock actual por articulo y almac<61> n, calculado a partir de la vista auxiliar anterior*/
CREATE VIEW V_INV_STOCK(
ID_ALMACEN,
ID_ARTICULO,
CANTIDAD)
AS
SELECT
ID_ALMACEN,
ID_ARTICULO,
(SUM(CANTIDAD_ENTRADA) - SUM(CANTIDAD_SALIDA)) as CANTIDAD
FROM V_INV_STOCK_AUX
GROUP BY ID_ALMACEN,
ID_ARTICULO;
/*Tomamos la misma filosofia que en los casos anteriores ya que los tiempos se reducen, que es una barbaridad*/
CREATE VIEW V_INVENTARIO_AUX(
ID_ALMACEN,
ID_ARTICULO,
STOCK,
PENDIENTE_RECEPCION,
RESERVA)
AS
SELECT ID_ALMACEN, ID_ARTICULO, CANTIDAD as STOCK, 0 as PENDIENTES, 0 as RESERVADAS
FROM V_INV_STOCK
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, CANTIDAD as PENDIENTES, 0 AS RESERVADAS
FROM V_INV_ENTRADAS_PENDIENTES
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 15:29:06 +00:00
SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, 0 as PENDIENTES, CANTIDAD AS RESERVADAS
FROM V_INV_RESERVAS;
/*Vista de inventario final OPTIMIZADISIMAAAA*/
CREATE VIEW V_INVENTARIO(
ID_ALMACEN,
ID_EMPRESA,
NOMBRE,
ID_ARTICULO,
REFERENCIA,
FAMILIA,
DESCRIPCION,
REFERENCIA_PROV,
PRECIO_NETO,
STOCK,
UNIDADES_ALMACEN,
COSTE_UNIDADES,
RESERVA,
PENDIENTE_RECEPCION)
AS
SELECT ID_ALMACEN,
ALMACENES.ID_EMPRESA,
ALMACENES.NOMBRE,
ID_ARTICULO,
ARTICULOS.REFERENCIA,
ARTICULOS.FAMILIA,
ARTICULOS.DESCRIPCION,
ARTICULOS.REFERENCIA_PROV,
COALESCE(ARTICULOS.PRECIO_NETO,0) as PRECIO_NETO,
(SUM(STOCK) - SUM(RESERVA)) as STOCK,
SUM(STOCK) as UNIDADES_ALMACEN,
/*Si las unidades son negativas no se tiene en cuenta el coste*/
CASE WHEN (SUM(STOCK) < 0) THEN 0
ELSE (COALESCE(ARTICULOS.PRECIO_NETO,0) * SUM(STOCK))
END as COSTE_UNIDADES,
SUM(RESERVA) as RESERVA,
SUM(PENDIENTE_RECEPCION) as PENDIENTE_RECEPCION
FROM V_INVENTARIO_AUX
LEFT JOIN ARTICULOS
ON (ARTICULOS.ID = V_INVENTARIO_AUX.ID_ARTICULO)
LEFT JOIN ALMACENES
ON (ALMACENES.ID = V_INVENTARIO_AUX.ID_ALMACEN)
WHERE (ID_ARTICULO <> 0)
2007-07-17 16:34:18 +00:00
AND (ARTICULOS.ELIMINADO = 0)
2007-06-11 15:29:06 +00:00
AND (ARTICULOS.INVENTARIABLE = 1)
GROUP BY ID_ALMACEN,
ALMACENES.ID_EMPRESA,
ALMACENES.NOMBRE,
ID_ARTICULO,
ARTICULOS.REFERENCIA,
ARTICULOS.FAMILIA,
ARTICULOS.DESCRIPCION,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.PRECIO_NETO;
2007-06-11 17:27:04 +00:00
/************************************************************************/
/* HISTORICO MOVIMIENTOS ************************************************/
/************************************************************************/
/*Las siguientes vista nos presentar<61> el historico de movimientos de todos los art<72> culos*/
CREATE VIEW V_HIS_MOV_REGULARIZACIONES(
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA)
AS
SELECT FECHA_MOVIMIENTO, ID_ALMACEN, ID_ARTICULO,
CASE WHEN TIPO = 'E' THEN 'Entrada'
ELSE 'Salida' END,
CASE WHEN TIPO = 'S' THEN (-1)* CANTIDAD
ELSE CANTIDAD END,
'Regularizaci<63> n por - ' || CAUSA
FROM MOVIMIENTOS;
CREATE VIEW V_HIS_MOV_ALB_PROV(
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA)
AS
SELECT
ALBARANES_PROVEEDOR.FECHA_ALBARAN,
V_ALB_PROV_DETALLES.ID_ALMACEN,
V_ALB_PROV_DETALLES.ID_ARTICULO,
CASE WHEN V_ALB_PROV_DETALLES.CANTIDAD < 0 THEN 'Salida'
ELSE 'Entrada' END,
V_ALB_PROV_DETALLES.CANTIDAD,
CASE WHEN ALBARANES_PROVEEDOR.IMPORTE_TOTAL < 0 THEN 'Orden de devoluci<63> n ' || ALBARANES_PROVEEDOR.REFERENCIA
ELSE 'Albar<61> n de proveedor ' || ALBARANES_PROVEEDOR.REFERENCIA END
FROM V_ALB_PROV_DETALLES
LEFT JOIN ALBARANES_PROVEEDOR
ON (V_ALB_PROV_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID)
WHERE (V_ALB_PROV_DETALLES.ID_ALMACEN IS NOT NULL);
CREATE VIEW V_HIS_MOV_ALB_CLI(
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA)
AS
SELECT
ALBARANES_CLIENTE.FECHA_ALBARAN,
V_ALB_CLI_DETALLES.ID_ALMACEN,
V_ALB_CLI_DETALLES.ID_ARTICULO,
CASE WHEN V_ALB_CLI_DETALLES.CANTIDAD < 0 THEN 'Entrada'
ELSE 'Salida' END,
(-1)*V_ALB_CLI_DETALLES.CANTIDAD,
CASE WHEN ALBARANES_CLIENTE.IMPORTE_TOTAL < 0 THEN 'Orden de devoluci<63> n de cliente ' || ALBARANES_CLIENTE.REFERENCIA
ELSE 'Albar<61> n de cliente ' || ALBARANES_CLIENTE.REFERENCIA END
FROM V_ALB_CLI_DETALLES
LEFT JOIN ALBARANES_CLIENTE
ON (V_ALB_CLI_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID)
WHERE (V_ALB_CLI_DETALLES.ID_ALMACEN IS NOT NULL)
AND (V_ALB_CLI_DETALLES.SITUACION in ('ENVIADO', 'SERVIDO'));
CREATE VIEW V_HIS_MOV_AUX(
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA)
AS
SELECT
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA
FROM V_HIS_MOV_ALB_PROV
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 17:27:04 +00:00
SELECT
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA
FROM V_HIS_MOV_ALB_CLI
2007-06-13 10:00:42 +00:00
UNION ALL
2007-06-11 17:27:04 +00:00
SELECT
FECHA,
ID_ALMACEN,
ID_ARTICULO,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA
FROM V_HIS_MOV_REGULARIZACIONES;
CREATE VIEW V_HISTORICO_MOVIMIENTOS(
FECHA,
ID_ALMACEN,
ID_EMPRESA,
NOMBRE_ALMACEN,
ID_ARTICULO,
FAMILIA,
2007-06-11 17:36:41 +00:00
REFERENCIA,
REFERENCIA_PROV,
2007-06-11 17:27:04 +00:00
DESCRIPCION,
TIPO_MOVIMIENTO,
CANTIDAD,
CAUSA)
AS
SELECT
V_HIS_MOV_AUX.FECHA,
V_HIS_MOV_AUX.ID_ALMACEN,
ALMACENES.ID_EMPRESA,
ALMACENES.NOMBRE,
V_HIS_MOV_AUX.ID_ARTICULO,
ARTICULOS.FAMILIA,
2007-06-11 17:36:41 +00:00
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
2007-06-11 17:27:04 +00:00
ARTICULOS.DESCRIPCION,
V_HIS_MOV_AUX.TIPO_MOVIMIENTO,
V_HIS_MOV_AUX.CANTIDAD,
V_HIS_MOV_AUX.CAUSA
FROM V_HIS_MOV_AUX
2007-06-13 10:00:42 +00:00
LEFT JOIN ALMACENES ON (ALMACENES.ID = V_HIS_MOV_AUX.ID_ALMACEN)
2007-06-11 17:27:04 +00:00
LEFT JOIN ARTICULOS ON (ARTICULOS.ID = V_HIS_MOV_AUX.ID_ARTICULO)
WHERE (V_HIS_MOV_AUX.ID_ARTICULO <> 0)
2007-06-13 10:00:42 +00:00
AND (ARTICULOS.INVENTARIABLE = 1);
2007-06-19 11:44:10 +00:00
CREATE VIEW V_REMESAS_PROVEEDOR(
2008-07-15 18:09:26 +00:00
ID,
ID_EMPRESA,
REFERENCIA,
TIPO,
FECHA_REMESA,
DESCRIPCION,
ID_DATOS_BANCO,
FECHA_ALTA,
FECHA_MODIFICACION,
USUARIO,
NOMBRE,
ENTIDAD,
SUCURSAL,
DC,
CUENTA,
SUFIJO_N19,
SUFIJO_N58,
NUM_COPIAS,
IMPORTE_TOTAL)
AS
2007-06-19 11:44:10 +00:00
SELECT
REMESAS_PROVEEDOR.ID,
REMESAS_PROVEEDOR.ID_EMPRESA,
REMESAS_PROVEEDOR.REFERENCIA,
2007-07-18 17:06:04 +00:00
REMESAS_PROVEEDOR.TIPO,
2007-06-19 11:44:10 +00:00
REMESAS_PROVEEDOR.FECHA_REMESA,
REMESAS_PROVEEDOR.DESCRIPCION,
REMESAS_PROVEEDOR.ID_DATOS_BANCO,
REMESAS_PROVEEDOR.FECHA_ALTA,
REMESAS_PROVEEDOR.FECHA_MODIFICACION,
REMESAS_PROVEEDOR.USUARIO,
EMPRESAS_DATOS_BANCO.NOMBRE,
EMPRESAS_DATOS_BANCO.ENTIDAD,
EMPRESAS_DATOS_BANCO.SUCURSAL,
EMPRESAS_DATOS_BANCO.DC,
EMPRESAS_DATOS_BANCO.CUENTA,
EMPRESAS_DATOS_BANCO.SUFIJO_N19,
EMPRESAS_DATOS_BANCO.SUFIJO_N58,
2008-07-15 18:09:26 +00:00
IMPRESIONES.NUM_COPIAS,
SUM(COALESCE(RECIBOS_PROVEEDOR.IMPORTE,0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS,0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL
2007-06-19 11:44:10 +00:00
FROM
REMESAS_PROVEEDOR
LEFT OUTER JOIN EMPRESAS_DATOS_BANCO ON (EMPRESAS_DATOS_BANCO.ID = REMESAS_PROVEEDOR.ID_DATOS_BANCO)
LEFT OUTER JOIN RECIBOS_PROVEEDOR ON (RECIBOS_PROVEEDOR.ID_REMESA = REMESAS_PROVEEDOR.ID)
2007-07-11 14:12:15 +00:00
LEFT OUTER JOIN V_REC_PRO_COMPENSADOS ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
2008-07-15 18:09:26 +00:00
LEFT JOIN IMPRESIONES ON ((IMPRESIONES.ID_TABLA = REMESAS_PROVEEDOR.ID) AND (IMPRESIONES.TABLA = 'REMESASPROVEEDOR'))
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18;
2007-07-09 17:16:22 +00:00
2007-07-17 15:28:26 +00:00
/*Vista para ver para quien estan reservados los articulos del inventario*/
CREATE VIEW V_INV_DETALLE_RESERVAS(
ID_ALB,
ID_EMPRESA,
REFERENCIA_ALB,
SITUACION_ALB,
FECHA_PREVISTA_ENVIO_ALB,
ID_ALMACEN_ALB,
ALMACEN_ALB,
ID_CLIENTE_ALB,
CLIENTE_ALB,
ID_ART,
FAMILIA_ART,
REFERENCIA_ART,
REFERENCIA_PROV_ART,
DESCRIPCION_ART,
CANTIDAD_ART)
AS
SELECT
ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.REFERENCIA,
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.ID_ALMACEN,
ALMACENES.NOMBRE AS ALMACEN,
ALBARANES_CLIENTE.ID_CLIENTE,
CONTACTOS.NOMBRE AS CLIENTE,
ARTICULOS.ID,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
SUM(COALESCE(ALBARANES_CLIENTE_DETALLES.CANTIDAD, 0))
FROM ALBARANES_CLIENTE_DETALLES
LEFT JOIN ALBARANES_CLIENTE
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID)
LEFT JOIN CONTACTOS
ON (ALBARANES_CLIENTE.ID_CLIENTE = CONTACTOS.ID)
LEFT JOIN ALMACENES
ON (ALBARANES_CLIENTE.ID_ALMACEN = ALMACENES.ID)
LEFT JOIN ARTICULOS
ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID)
LEFT JOIN V_ALB_CLI_SITUACION
ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.ID)
/*Quitamos aquellos detalles que no tengan cabecera existente
aquellos que no se correspondan con un almac<61> n es decir albaranes libres
que el albaran este pendiente (los articulos estan reservados en el almacen)
aquellos que no se correspondan con art<72> culos existentes en el catalogo
y que no sean inventariables*/
WHERE (ALBARANES_CLIENTE.ID IS NOT NULL)
AND (ALBARANES_CLIENTE.ID_ALMACEN IS NOT NULL)
AND (V_ALB_CLI_SITUACION.SITUACION = 'PENDIENTE')
AND (ARTICULOS.ID is not null)
2007-07-17 16:34:18 +00:00
AND (ARTICULOS.ELIMINADO = 0)
2007-07-17 15:28:26 +00:00
AND (ARTICULOS.INVENTARIABLE = 1)
GROUP BY
ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
ALBARANES_CLIENTE.ID_EMPRESA,
ALBARANES_CLIENTE.REFERENCIA,
V_ALB_CLI_SITUACION.SITUACION,
ALBARANES_CLIENTE.FECHA_PREVISTA_ENVIO,
ALBARANES_CLIENTE.ID_ALMACEN,
ALMACENES.NOMBRE,
ALBARANES_CLIENTE.ID_CLIENTE,
CONTACTOS.NOMBRE,
ARTICULOS.ID,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION;
2007-07-09 17:16:22 +00:00
2007-07-17 16:34:18 +00:00
CREATE VIEW V_ARTICULOS(
ID, ID_EMPRESA, REFERENCIA, DESCRIPCION,
FAMILIA, IMAGEN, COMISIONABLE, FECHA_ALTA,
FECHA_MODIFICACION, USUARIO,
REFERENCIA_PROV,
PRECIO_COSTE,
PRECIO_PORTE,
DESCUENTO,
PRECIO_NETO,
INVENTARIABLE,
ID_PROVEEDOR,
2007-07-20 09:48:30 +00:00
NOMBRE_PROVEEDOR,
2008-06-11 10:43:56 +00:00
ELIMINADO, TIENDA_WEB)
2007-07-17 16:34:18 +00:00
AS
SELECT ARTICULOS.ID, ARTICULOS.ID_EMPRESA, ARTICULOS.REFERENCIA, ARTICULOS.DESCRIPCION,
ARTICULOS.FAMILIA, ARTICULOS.IMAGEN, ARTICULOS.COMISIONABLE, ARTICULOS.FECHA_ALTA,
ARTICULOS.FECHA_MODIFICACION, ARTICULOS.USUARIO,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.PRECIO_PORTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.INVENTARIABLE,
ARTICULOS.ID_PROVEEDOR,
2007-07-20 09:48:30 +00:00
CONTACTOS.NOMBRE AS NOMBRE_PROVEEDOR,
2008-06-11 10:43:56 +00:00
ARTICULOS.ELIMINADO, ARTICULOS.TIENDA_WEB
2007-07-17 16:34:18 +00:00
FROM ARTICULOS
LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS.ID_PROVEEDOR)
2007-08-01 18:24:02 +00:00
WHERE (ARTICULOS.ELIMINADO = 0);
/* **********************************************************************/
/* INFORMES *************************************************************/
/* **********************************************************************/
2008-04-11 15:00:35 +00:00
CREATE VIEW V_INF_FEC_ULTCOM(
2007-08-01 18:24:02 +00:00
ID_EMPRESA,
ID_ARTICULO,
FECHA)
AS
select
facturas_proveedor.ID_EMPRESA,
facturas_proveedor_detalles.ID_ARTICULO,
max(facturas_proveedor.FECHA_FACTURA)
from facturas_proveedor_detalles
left join facturas_proveedor
on (facturas_proveedor.id = facturas_proveedor_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_proveedor_detalles.cantidad > 0)
group by
facturas_proveedor.ID_EMPRESA,
2008-04-11 15:00:35 +00:00
facturas_proveedor_detalles.ID_ARTICULO
;
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
CREATE VIEW V_INF_ULTCOM(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA,
IMPORTE_NETO_COMPRA,
IMPORTE_PORTE_COMPRA)
AS
select
facturas_proveedor.id_empresa,
facturas_proveedor_detalles.ID_ARTICULO,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_COMPRA,
avg(facturas_proveedor_detalles.IMPORTE_UNIDAD - (facturas_proveedor_detalles.IMPORTE_UNIDAD * (facturas_proveedor_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_COMPRA,
avg(facturas_proveedor_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_COMPRA
from facturas_proveedor_detalles
left outer join facturas_proveedor
on (facturas_proveedor.id = facturas_proveedor_detalles.id_factura)
left outer join v_inf_fec_ultcom
on (v_inf_fec_ultcom.id_empresa = facturas_proveedor.id_empresa)
and (v_inf_fec_ultcom.id_articulo = facturas_proveedor_detalles.id_articulo)
WHERE (facturas_proveedor_detalles.ID_ARTICULO IS NOT NULL) AND (facturas_proveedor_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_proveedor_detalles.cantidad > 0) /*Quitamos los abonos*/
and (facturas_proveedor.FECHA_FACTURA = v_inf_fec_ultcom.fecha) /*nos quedamos con las ultimas compras*/
group by 1, 2
;
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
CREATE VIEW V_INF_ULTCOM_PORARTICULO(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_COMPRA,
IMPORTE_NETO_COMPRA,
IMPORTE_PORTE_COMPRA)
AS
select articulos.id_empresa, articulos.id,
coalesce(v_inf_ultcom.importe_unidad_compra, articulos.precio_coste),
coalesce(v_inf_ultcom.importe_neto_compra, articulos.precio_neto),
coalesce(v_inf_ultcom.importe_porte_compra, articulos.precio_porte)
from articulos
left join v_inf_ultcom
on ((v_inf_ultcom.id_empresa = articulos.id_empresa) and (v_inf_ultcom.id_articulo = articulos.id))
;
CREATE VIEW V_INF_FEC_ULTVEN_PORARTICULO(
2007-08-03 12:00:20 +00:00
ID_EMPRESA,
ID_ARTICULO,
FECHA)
AS
select
facturas_cliente.ID_EMPRESA,
facturas_cliente_detalles.ID_ARTICULO,
max(facturas_cliente.FECHA_FACTURA)
from facturas_cliente_detalles
left join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_cliente_detalles.cantidad > 0)
group by
facturas_cliente.ID_EMPRESA,
2008-04-11 15:00:35 +00:00
facturas_cliente_detalles.ID_ARTICULO
;
2007-08-03 12:00:20 +00:00
2008-04-11 15:00:35 +00:00
CREATE VIEW V_INF_FEC_ULTVEN_PORCLIENTE(
2007-08-01 18:24:02 +00:00
ID_EMPRESA,
2008-04-11 15:00:35 +00:00
ID_CLIENTE,
2007-08-01 18:24:02 +00:00
ID_ARTICULO,
2008-04-11 15:00:35 +00:00
FECHA)
2007-08-01 18:24:02 +00:00
AS
select
2008-04-11 15:00:35 +00:00
facturas_cliente.ID_EMPRESA,
facturas_cliente.ID_CLIENTE,
facturas_cliente_detalles.ID_ARTICULO,
max(facturas_cliente.FECHA_FACTURA)
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
from facturas_cliente_detalles
left join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
WHERE (ID_ARTICULO IS NOT NULL)
AND (ID_ARTICULO > 0)
and (facturas_cliente_detalles.cantidad > 0)
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
group by
facturas_cliente.ID_EMPRESA,
facturas_cliente.ID_CLIENTE,
facturas_cliente_detalles.ID_ARTICULO
;
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
CREATE VIEW V_INF_ULTVEN_PORARTICULO(
ID_EMPRESA,
ID_ARTICULO,
IMPORTE_UNIDAD_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA)
AS
select
facturas_cliente.id_empresa,
facturas_cliente_detalles.ID_ARTICULO,
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
avg(facturas_cliente_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_VENTA,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD - (facturas_cliente_detalles.IMPORTE_UNIDAD * (facturas_cliente_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_VENTA,
avg(facturas_cliente_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_VENTA
2007-08-03 12:00:20 +00:00
2008-04-11 15:00:35 +00:00
from facturas_cliente_detalles
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
inner join facturas_cliente
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
2007-08-03 12:00:20 +00:00
2008-04-11 15:00:35 +00:00
inner join v_inf_fec_ultven_PORARTICULO
on (v_inf_fec_ultven_PORARTICULO.id_empresa = facturas_cliente.id_empresa)
and (v_inf_fec_ultven_PORARTICULO.id_articulo = facturas_cliente_detalles.id_articulo)
2007-08-01 18:24:02 +00:00
2008-04-11 15:00:35 +00:00
WHERE (facturas_cliente_detalles.ID_ARTICULO IS NOT NULL) AND (facturas_cliente_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_cliente_detalles.cantidad > 0) /*Quitamos los abonos*/
and (facturas_cliente.FECHA_FACTURA = v_inf_fec_ultven_PORARTICULO.fecha) /*nos quedamos con las ultimas compras*/
2007-08-03 12:00:20 +00:00
2008-04-11 15:00:35 +00:00
group by 1, 2
;
CREATE VIEW V_INF_ULTVEN_PORCLIENTE(
2007-08-03 12:00:20 +00:00
ID_EMPRESA,
ID_CLIENTE,
ID_ARTICULO,
IMPORTE_UNIDAD_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA)
AS
select
facturas_cliente.id_empresa,
facturas_cliente.id_cliente,
facturas_cliente_detalles.ID_ARTICULO,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD) as IMPORTE_UNIDAD_VENTA,
avg(facturas_cliente_detalles.IMPORTE_UNIDAD - (facturas_cliente_detalles.IMPORTE_UNIDAD * (facturas_cliente_detalles.DESCUENTO / 100))) AS IMPORTE_NETO_VENTA,
avg(facturas_cliente_detalles.IMPORTE_PORTE) as IMPORTE_PORTE_VENTA
from facturas_cliente_detalles
2008-04-11 15:00:35 +00:00
inner join facturas_cliente
2007-08-03 12:00:20 +00:00
on (facturas_cliente.id = facturas_cliente_detalles.id_factura)
2008-04-11 15:00:35 +00:00
inner join v_inf_fec_ultven_porcliente
on (v_inf_fec_ultven_porcliente.id_empresa = facturas_cliente.id_empresa)
and (v_inf_fec_ultven_porcliente.id_cliente = facturas_cliente.id_cliente)
and (v_inf_fec_ultven_porcliente.id_articulo = facturas_cliente_detalles.id_articulo)
2007-08-03 12:00:20 +00:00
WHERE (facturas_cliente_detalles.ID_ARTICULO IS NOT NULL) AND (facturas_cliente_detalles.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
and (facturas_cliente_detalles.cantidad > 0) /*Quitamos los abonos*/
2008-04-11 15:00:35 +00:00
and (facturas_cliente.FECHA_FACTURA = v_inf_fec_ultven_porcliente.fecha) /*nos quedamos con las ultimas compras*/
2007-08-03 12:00:20 +00:00
2008-04-11 15:00:35 +00:00
group by 1, 2, 3
;
2007-08-03 12:00:20 +00:00
2007-08-01 18:24:02 +00:00
/* Al igual que en Varela tendremos esta vista para hacer todos los informes que queramos de ventas, ya que estar<61> desglosado por art<72> culo */
CREATE VIEW V_INF_VENTAS_ARTICULOS(
ID_FACTURA,
ID_EMPRESA,
REFERENCIA_FACTURA,
FECHA_FACTURA,
IMPORTE_TOTAL_FACTURA,
ID_COMISION_FACTURA,
ID_ARTICULO,
FAMILIA,
REFERENCIA,
REFERENCIA_PROV,
DESCRIPCION,
COMISIONABLE,
INVENTARIABLE,
IMPORTE_UNIDAD_COSTE,
DESCUENTO_PROVEEDOR_COSTE,
IMPORTE_NETO_COSTE,
IMPORTE_PORTE_COSTE,
CANTIDAD,
IMPORTE_UNIDAD_VENTA,
DESCUENTO_CLIENTE_VENTA,
IMPORTE_NETO_VENTA,
IMPORTE_PORTE_VENTA,
IMPORTE_TOTAL_VENTA,
NIF_CIF_PROVEEDOR,
NOMBRE_PROVEEDOR,
CALLE_PROVEEDOR,
POBLACION_PROVEEDOR,
PROVINCIA_PROVEEDOR,
NIF_CIF_CLIENTE,
NOMBRE_CLIENTE,
NOMBRE_COMERCIAL_CLIENTE,
CALLE_CLIENTE,
POBLACION_CLIENTE,
PROVINCIA_CLIENTE,
NIF_CIF_AGENTE,
NOMBRE_AGENTE,
CALLE_AGENTE,
POBLACION_AGENTE,
PROVINCIA_AGENTE,
COMISION_AGENTE,
IMPORTE_COMISION_AGENTE)
AS
select
FACTURAS_CLIENTE.ID,
FACTURAS_CLIENTE.ID_EMPRESA,
FACTURAS_CLIENTE.REFERENCIA,
FACTURAS_CLIENTE.FECHA_FACTURA,
FACTURAS_CLIENTE.IMPORTE_TOTAL,
FACTURAS_CLIENTE.ID_COMISION_LIQUIDADA,
FACTURAS_CLIENTE_DETALLES.ID_ARTICULO,
ARTICULOS.FAMILIA,
ARTICULOS.REFERENCIA,
ARTICULOS.REFERENCIA_PROV,
ARTICULOS.DESCRIPCION,
ARTICULOS.COMISIONABLE,
ARTICULOS.INVENTARIABLE,
ARTICULOS.PRECIO_COSTE,
ARTICULOS.DESCUENTO,
ARTICULOS.PRECIO_NETO,
ARTICULOS.PRECIO_PORTE,
FACTURAS_CLIENTE_DETALLES.CANTIDAD,
FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD as importe_unidad_venta,
FACTURAS_CLIENTE_DETALLES.DESCUENTO,
2008-01-21 17:22:45 +00:00
case when FACTURAS_CLIENTE_DETALLES.CANTIDAD < 0 then
/*En caso de ser un abono el importe neto venta debe ser negativo para que los informes no salgan falseados*/
(-1)*(FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUENTO/100)))
else
FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD - (FACTURAS_CLIENTE_DETALLES.IMPORTE_UNIDAD * (FACTURAS_CLIENTE_DETALLES.DESCUENTO/100))
end as importe_neto_venta,
2007-08-01 18:24:02 +00:00
FACTURAS_CLIENTE_DETALLES.IMPORTE_PORTE as importe_porte_venta,
FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL,
PROVEEDORES.NIF_CIF,
PROVEEDORES.NOMBRE,
PROVEEDORES.CALLE,
PROVEEDORES.POBLACION,
PROVEEDORES.PROVINCIA,
CLIENTES.NIF_CIF,
CLIENTES.NOMBRE,
CLIENTES_DATOS.NOMBRE_COMERCIAL,
CLIENTES.CALLE,
CLIENTES.POBLACION,
CLIENTES.PROVINCIA,
AGENTES.NIF_CIF,
AGENTES.NOMBRE,
AGENTES.CALLE,
AGENTES.POBLACION,
AGENTES.PROVINCIA,
COALESCE(AGENTES_COMISIONES.COMISION, 0) AS COMISION,
(CASE COALESCE(AGENTES_COMISIONES.COMISION, 0) WHEN 0 THEN 0
ELSE ((FACTURAS_CLIENTE_DETALLES.IMPORTE_TOTAL * AGENTES_COMISIONES.COMISION)/100) END) as IMPORTE_COMISION
from FACTURAS_CLIENTE_DETALLES
left join ARTICULOS on (ARTICULOS.ID = FACTURAS_CLIENTE_DETALLES.ID_ARTICULO)
left join CONTACTOS PROVEEDORES on (PROVEEDORES.ID = ARTICULOS.ID_PROVEEDOR)
left join FACTURAS_CLIENTE on (FACTURAS_CLIENTE.ID = FACTURAS_CLIENTE_DETALLES.ID_FACTURA)
left join CONTACTOS CLIENTES on (CLIENTES.ID = FACTURAS_CLIENTE.ID_CLIENTE)
left join CLIENTES_DATOS on (CLIENTES_DATOS.ID_CLIENTE = CLIENTES.ID)
left join CONTACTOS AGENTES on (AGENTES.ID = CLIENTES_DATOS.ID_AGENTE)
left join AGENTES_COMISIONES
on ((AGENTES_COMISIONES.ID_AGENTE = AGENTES.ID) and (AGENTES_COMISIONES.ID_PROVEEDOR = PROVEEDORES.ID))
where (FACTURAS_CLIENTE_DETALLES.ID_ARTICULO is not null) and (FACTURAS_CLIENTE_DETALLES.ID_ARTICULO > 0) /*Quitamos conceptos libres*/
2007-09-10 10:02:11 +00:00
/*and (FACTURAS_CLIENTE_DETALLES.cantidad > 0) Quitamos los abonos*/
2008-01-21 17:22:45 +00:00
and (ARTICULOS.INVENTARIABLE = 1);