diff --git a/Database/ACANA.FDB b/Database/ACANA.FDB
index 8f8ef86d..49c0dbf6 100644
Binary files a/Database/ACANA.FDB and b/Database/ACANA.FDB differ
diff --git a/Database/Anterior/VISTAS.SQL b/Database/Anterior/VISTAS.SQL
deleted file mode 100644
index 560db191..00000000
--- a/Database/Anterior/VISTAS.SQL
+++ /dev/null
@@ -1,1947 +0,0 @@
-DROP VIEW V_FACTURAS_CLIENTE;
-DROP VIEW V_PRESUPUESTOS_CLIENTE;
-DROP VIEW V_ARTICULOS;
-DROP VIEW V_EMPLEADOS;
-DROP VIEW V_PROVEEDORES;
-DROP VIEW V_CLIENTES;
-DROP VIEW V_CONTACTOS;
-
-
-CREATE VIEW V_CONTACTOS(
- ID,
- ID_CATEGORIA,
- NIF_CIF,
- NOMBRE,
- PERSONA_CONTACTO,
- 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.PERSONA_CONTACTO,
- 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,
- PERSONA_CONTACTO,
- 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,
- GRUPO_CLIENTE,
- NOMBRE_COMERCIAL,
- VENCIMIENTO_FACTURAS,
- BLOQUEADO,
- REGIMEN_IVA,
- MOTIVO_BLOQUEO,
- RECARGO_EQUIVALENCIA,
- ID_TIPO_IVA,
- ID_FORMA_PAGO,
- TIENDA_WEB,
- CODIGO_ASIGNADO)
-AS
-SELECT
- V_CONTACTOS.ID,
- V_CONTACTOS.ID_CATEGORIA,
- V_CONTACTOS.NIF_CIF,
- V_CONTACTOS.NOMBRE,
- V_CONTACTOS.PERSONA_CONTACTO,
- 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.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,
- CLIENTES_DATOS.TIENDA_WEB,
- CLIENTES_DATOS.CODIGO_ASIGNADO
-FROM
- V_CONTACTOS
- LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE)
-WHERE
- V_CONTACTOS.ID_CATEGORIA = 1;
-
-CREATE VIEW V_PROVEEDORES(
- ID,
- ID_CATEGORIA,
- NIF_CIF,
- NOMBRE,
- PERSONA_CONTACTO,
- 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,
- DESCRIPCION_PROVEEDOR,
- CODIGO_ASIGNADO,
- GRUPO_PROVEEDOR,
- REGIMEN_IVA,
- ID_TIPO_IVA,
- ID_FORMA_PAGO,
- TIENDA_WEB,
- HOMOLOGADO,
- CERTIFICACION)
-AS
-SELECT
- V_CONTACTOS.ID,
- V_CONTACTOS.ID_CATEGORIA,
- V_CONTACTOS.NIF_CIF,
- V_CONTACTOS.NOMBRE,
- V_CONTACTOS.PERSONA_CONTACTO,
- 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.DESCRIPCION_PROVEEDOR,
- PROVEEDORES_DATOS.CODIGO_ASIGNADO,
- PROVEEDORES_DATOS.GRUPO_PROVEEDOR,
- PROVEEDORES_DATOS.REGIMEN_IVA,
- PROVEEDORES_DATOS.ID_TIPO_IVA,
- PROVEEDORES_DATOS.ID_FORMA_PAGO,
- PROVEEDORES_DATOS.TIENDA_WEB,
- PROVEEDORES_DATOS.HOMOLOGADO,
- PROVEEDORES_DATOS.CERTIFICACION
-FROM
- PROVEEDORES_DATOS
- INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID)
-WHERE
- V_CONTACTOS.ID_CATEGORIA = 2;
-
-
-CREATE VIEW V_EMPLEADOS(
- ID,
- ID_CATEGORIA,
- NIF_CIF,
- NOMBRE,
- PERSONA_CONTACTO,
- 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,
- FECHA_NACIMIENTO,
- CATEGORIA,
- FECHA_ALTA_EMPRESA,
- FORMACION_BASE,
- FORMACION_COMPLE,
- FORMACION_RECIBIDA,
- EXPERIENCIA)
-AS
-SELECT V_CONTACTOS.ID,
- V_CONTACTOS.ID_CATEGORIA,
- V_CONTACTOS.NIF_CIF,
- V_CONTACTOS.NOMBRE,
- V_CONTACTOS.PERSONA_CONTACTO,
- 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,
-
- EMPLEADOS_DATOS.FECHA_NACIMIENTO,
- EMPLEADOS_DATOS.CATEGORIA,
- EMPLEADOS_DATOS.FECHA_ALTA_EMPRESA,
- EMPLEADOS_DATOS.FORMACION_BASE,
- EMPLEADOS_DATOS.FORMACION_COMPLE,
- EMPLEADOS_DATOS.FORMACION_RECIBIDA,
- EMPLEADOS_DATOS.EXPERIENCIA
-
-FROM V_CONTACTOS
-INNER JOIN EMPLEADOS_DATOS ON (EMPLEADOS_DATOS.ID_EMPLEADO = V_CONTACTOS.ID)
-
-WHERE V_CONTACTOS.ID_CATEGORIA = 3;
-
-
-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,
- NOMBRE_PROVEEDOR,
- ELIMINADO)
-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,
- CONTACTOS.NOMBRE AS NOMBRE_PROVEEDOR,
- ARTICULOS.ELIMINADO
-FROM ARTICULOS
-LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ARTICULOS.ID_PROVEEDOR)
-WHERE (ARTICULOS.ELIMINADO = 0);
-
-CREATE VIEW V_PRESUPUESTOS_CLIENTE(
- ID,
- ID_EMPRESA,
- FECHA_PRESUPUESTO,
- FECHA_DECISION,
- REFERENCIA,
- SITUACION,
- ID_CLIENTE,
- NIF_CIF,
- NOMBRE,
- REFERENCIA_CLIENTE,
- CLIENTE_FINAL,
- PORTADA,
- MEMORIA,
- 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)
-AS
-SELECT
- PRESUPUESTOS_CLIENTE.ID,
- PRESUPUESTOS_CLIENTE.ID_EMPRESA,
- PRESUPUESTOS_CLIENTE.FECHA_PRESUPUESTO,
- PRESUPUESTOS_CLIENTE.FECHA_DECISION,
- PRESUPUESTOS_CLIENTE.REFERENCIA,
- PRESUPUESTOS_CLIENTE.SITUACION,
- PRESUPUESTOS_CLIENTE.ID_CLIENTE,
- V_CLIENTES.NIF_CIF,
- V_CLIENTES.NOMBRE,
- PRESUPUESTOS_CLIENTE.REFERENCIA_CLIENTE,
- PRESUPUESTOS_CLIENTE.CLIENTE_FINAL,
- PRESUPUESTOS_CLIENTE.PORTADA,
- PRESUPUESTOS_CLIENTE.MEMORIA,
- PRESUPUESTOS_CLIENTE.OBSERVACIONES,
- PRESUPUESTOS_CLIENTE.INCIDENCIAS,
- PRESUPUESTOS_CLIENTE.INCIDENCIAS_ACTIVAS,
- PRESUPUESTOS_CLIENTE.FECHA_ALTA,
- PRESUPUESTOS_CLIENTE.FECHA_MODIFICACION,
- PRESUPUESTOS_CLIENTE.USUARIO,
- PRESUPUESTOS_CLIENTE.IMPORTE_NETO,
- PRESUPUESTOS_CLIENTE.IMPORTE_PORTE,
- PRESUPUESTOS_CLIENTE.DESCUENTO,
- PRESUPUESTOS_CLIENTE.IMPORTE_DESCUENTO,
- PRESUPUESTOS_CLIENTE.BASE_IMPONIBLE,
- PRESUPUESTOS_CLIENTE.IVA,
- PRESUPUESTOS_CLIENTE.IMPORTE_IVA,
- PRESUPUESTOS_CLIENTE.IMPORTE_TOTAL,
- PRESUPUESTOS_CLIENTE.ID_FORMA_PAGO
-FROM
- PRESUPUESTOS_CLIENTE
- LEFT OUTER JOIN V_CLIENTES ON (PRESUPUESTOS_CLIENTE.ID_CLIENTE = V_CLIENTES.ID)
-
-
-
-/* Situació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;
-
-CREATE VIEW V_ALBARANES_CLIENTE(
- 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)
-AS
-SELECT
- ALBARANES_CLIENTE.ID,
- ALBARANES_CLIENTE.ID_EMPRESA,
- ALBARANES_CLIENTE.ID_CLIENTE,
- CONTACTOS.NOMBRE,
- ALBARANES_CLIENTE.FECHA_ALBARAN,
- ALBARANES_CLIENTE.REFERENCIA,
- ALBARANES_CLIENTE.REFERENCIA_CLIENTE,
- CASE WHEN (ALBARANES_CLIENTE.IMPORTE_TOTAL < 0) THEN 'D' ELSE 'A' END AS TIPO,
- TRIM(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,
- ALBARANES_CLIENTE.FECHA_RECEPCION
-FROM
- ALBARANES_CLIENTE
- LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_CLIENTE.ID_CLIENTE)
- 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)
- LEFT OUTER JOIN V_ALB_CLI_SITUACION ON (V_ALB_CLI_SITUACION.ID = ALBARANES_CLIENTE.ID)
- LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_CLIENTE.ID_ALMACEN);
-
-
-
-/*FACTURAS Y RECIBOS DE CLIENTE*/
-DROP VIEW V_FACTURAS_CLIENTE;
-DROP VIEW V_FAC_CLI_SITUACION;
-DROP VIEW V_RECIBOS_CLIENTE;
-DROP VIEW V_REC_FAC_CLI_COBRADOS;
-DROP VIEW V_REC_FAC_CLI;
-DROP VIEW V_REC_CLI_SITUACION;
-DROP VIEW V_REC_CLI_COMPENSADOS;
-
-
-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_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;
-
-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;
-
-CREATE VIEW V_RECIBOS_CLIENTE(
- 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)
-AS
-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 TRIM(V_REC_CLI_SITUACION.SITUACION)
- ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)
- END,
- 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,
- COALESCE(RECIBOS_CLIENTE.IMPORTE, 0) + COALESCE(RECIBOS_CLIENTE.OTROS_GASTOS, 0) + COALESCE(V_REC_CLI_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
-
- 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,
- RECIBOS_CLIENTE.USUARIO
-
-FROM RECIBOS_CLIENTE
-LEFT JOIN V_REC_CLI_SITUACION
-ON (V_REC_CLI_SITUACION.ID_RECIBO = RECIBOS_CLIENTE.ID)
-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
-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
-ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO);
-
-
-CREATE VIEW V_REC_FAC_CLI_COBRADOS(
- ID_FACTURA,
- NUM_REC_COBRADOS)
-AS
-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 (TRIM(V_REC_CLI_SITUACION.SITUACION) = 'COBRADO')
-GROUP BY RECIBOS_CLIENTE.ID_FACTURA
-;
-
-CREATE VIEW V_FAC_CLI_SITUACION(
- ID_FACTURA,
- SITUACION)
-AS
-SELECT ID_FACTURA,
-CASE
- WHEN ((SUM(NUM_RECIBOS) = 0)
- OR (SUM(NUM_REC_COBRADOS) = 0)) THEN 'PENDIENTE'
- WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_COBRADOS)) THEN 'PAGADA'
- ELSE 'PARCIALMENTE PAGADA'
-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;
-
-CREATE VIEW V_FACTURAS_CLIENTE(
- 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,
- IGNORAR_CONTABILIDAD)
-AS
-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,
- TRIM(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,
- COMISIONES_LIQUIDADAS.REFERENCIA,
- FACTURAS_CLIENTE.IGNORAR_CONTABILIDAD
- 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
- ON (CLIENTES_DATOS.ID_CLIENTE = FACTURAS_CLIENTE.ID_CLIENTE);
-
-
-/*FACTURAS Y RECIBOS DE PROVEEDOR*/
-DROP VIEW V_FACTURAS_PROVEEDOR;
-DROP VIEW V_FAC_PRO_SITUACION;
-DROP VIEW V_REC_FAC_PRO_PAGADOS;
-DROP VIEW V_RECIBOS_PROVEEDOR;
-DROP VIEW V_REC_FAC_PRO;
-DROP VIEW V_REC_PRO_SITUACION;
-DROP VIEW V_REC_PRO_COMPENSADOS;
-
-
-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;
-
-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_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_RECIBOS_PROVEEDOR(
- ID,
- ID_RECIBO_COMPENSADO,
- REFERENCIA_REC_COMPENSADO,
- REFERENCIA,
- REFERENCIA_PROVEEDOR,
- SITUACION,
- ID_FACTURA,
- ID_REMESA,
- REFERENCIA_REMESA,
- FECHA_EMISION,
- FECHA_VENCIMIENTO,
- DESCRIPCION,
- OBSERVACIONES,
- IMPORTE,
- OTROS_GASTOS,
- IMPORTE_TOTAL,
- REFERENCIA_FACTURA_PROV,
- 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
-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 TRIM(V_REC_PRO_SITUACION.SITUACION)
- ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)
- END,
- RECIBOS_PROVEEDOR.ID_FACTURA,
- RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA,
- RECIBOS_PROVEEDOR.FECHA_EMISION, RECIBOS_PROVEEDOR.FECHA_VENCIMIENTO, RECIBOS_PROVEEDOR.DESCRIPCION,
- RECIBOS_PROVEEDOR.OBSERVACIONES, RECIBOS_PROVEEDOR.IMPORTE, RECIBOS_PROVEEDOR.OTROS_GASTOS,
- COALESCE(RECIBOS_PROVEEDOR.IMPORTE, 0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS, 0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO, 0),
-
- FACTURAS_PROVEEDOR.REFERENCIA_PROVEEDOR, FACTURAS_PROVEEDOR.FECHA_FACTURA,
- FORMAS_PAGO.DESCRIPCION, FACTURAS_PROVEEDOR.IMPORTE_TOTAL,
- 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
-
-FROM RECIBOS_PROVEEDOR
-LEFT JOIN V_REC_PRO_SITUACION
-ON (V_REC_PRO_SITUACION.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
-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
-ON (CONTACTOS_DATOS_BANCO.ID_CONTACTO = CONTACTOS.ID)
-LEFT JOIN REMESAS_PROVEEDOR
-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);
-
-
-CREATE VIEW V_REC_FAC_PRO_PAGADOS(
- ID_FACTURA,
- NUM_REC_PAGADOS)
-AS
-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 (TRIM(V_REC_PRO_SITUACION.SITUACION) = 'PAGADO')
-GROUP BY RECIBOS_PROVEEDOR.ID_FACTURA;
-
-
-CREATE VIEW V_FAC_PRO_SITUACION(
- ID_FACTURA,
- SITUACION)
-AS
-SELECT ID_FACTURA,
-CASE
- WHEN ((SUM(NUM_RECIBOS) = 0)
- OR (SUM(NUM_REC_PAGADOS) = 0)) THEN 'PENDIENTE'
- WHEN (SUM(NUM_RECIBOS) = SUM(NUM_REC_PAGADOS)) THEN 'PAGADA'
- ELSE 'PARCIALMENTE PAGADA'
-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;
-
-
-CREATE VIEW V_FACTURAS_PROVEEDOR(
- 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)
-AS
-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,
- TRIM(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,
- FACTURAS_PROVEEDOR.IMPORTE_PORTE
- FROM V_FAC_PRO_SITUACION
- LEFT JOIN FACTURAS_PROVEEDOR
- ON (FACTURAS_PROVEEDOR.ID = V_FAC_PRO_SITUACION.ID_FACTURA)
- LEFT JOIN PROVEEDORES_DATOS
- ON (PROVEEDORES_DATOS.ID_PROVEEDOR = FACTURAS_PROVEEDOR.ID_PROVEEDOR);
-
-
-DROP VIEW V_PEDIDOS_PROVEEDOR;
-DROP VIEW V_PED_PROV_SITUACION;
-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;
-
-
-/*Agrupa los artículos de un mismo albarán (ya que en un albarán puede existir varias lineas con el mismo artículo).
- Para cada artículo de albarán le ponemos el pedido con el que esta asociado y el almacén donde se recibio.
- Se quitan todos los artículos que no tengamos en catálogo (ID_ARTICULO nulo, lineas de detalle libres)-> esta premisa la cambiamos para que
- no se falsee la situación de los pedidos, asi pues todo articulo que no este en el catálogo lo pondremos con ID_ARTICULO 0.
- Se quitan también aquellos que no seán inventariables -> esta premisa nos falsearía la situació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,
- ALBARANES_PROVEEDOR.ID_PEDIDO,
- ALBARANES_PROVEEDOR.ID_ALMACEN,
- COALESCE(ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO, 0),
- SUM (COALESCE(ALBARANES_PROVEEDOR_DETALLES.CANTIDAD, 0)) AS CANTIDAD
-
-FROM ALBARANES_PROVEEDOR_DETALLES
-LEFT JOIN ALBARANES_PROVEEDOR
-ON (ALBARANES_PROVEEDOR_DETALLES.ID_ALBARAN = ALBARANES_PROVEEDOR.ID)
-
-/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos
-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,
- ALBARANES_PROVEEDOR.ID_PEDIDO,
- ALBARANES_PROVEEDOR.ID_ALMACEN,
- ALBARANES_PROVEEDOR_DETALLES.ID_ARTICULO;
-
-
-/*Agrupa los artículos de un mismo pedido (ya que en un pedido puede existir varias lineas con el mismo artículo).
- Para cada artículo de pedido le ponemos el pedido con el que esta asociado y el almacén donde será recibido.
- Se quitan todos los artículos que no tengamos en catálogo (ID_ARTICULO nulo, lineas de detalle libres)-> esta premisa la cambiamos para que
- no se falsee la situación de los pedidos, asi pues todo articulo que no este en el catálogo lo pondremos con ID_ARTICULO 0.
- Se quitan también aquellos que no seá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)
-
-/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos
-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í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ó ya que un mismo pedido podría tener varios albaranes con distintos almacenes de destino*/
-/*Aquellos articulos que no tengan ID_PEDIDO es porque el albará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ía la consulta de la segunda disparando tiempos, por ello teniendo las dos vistas ejecutadas hacemos una union*/
-/*obteniendo todos los artículos del pedido, tanto recibidos como pendientes, luego haremos la agrupació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
-UNION ALL
-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ículos del pedido de proveedor*/
-/*Despreciamos aquellas tuplas cuya cantidad pedida sea null, porque son articulos añadidos en el albarán que*/
-/*no está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,
-/* ID_ALMACEN,*/
- ID_ARTICULO,
- CANTIDAD_PEDIDA,
- CANTIDAD_RECIBIDA,
- CANTIDAD_PENDIENTE)
-AS
-SELECT ID_PEDIDO,
- /*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/
- 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
-/*
-LEFT JOIN PEDIDOS_PROVEEDOR
-ON (PEDIDOS_PROVEEDOR.ID = V_PED_PROV_ARTICULOS_AUX.ID_PEDIDO)
-*/
-GROUP BY ID_PEDIDO,
- /*PEDIDOS_PROVEEDOR.ID_ALMACEN,*/
- ID_ARTICULO
-HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL;
-
-CREATE VIEW V_PED_PROV_SITUACION(
- ID_PEDIDO,
- SITUACION)
-AS
-SELECT ID_PEDIDO,
-CASE WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) = 0) THEN 'PENDIENTE'
- WHEN (SUM(CANTIDAD_PENDIENTE) <= 0) THEN 'RECIBIDO'
- WHEN (SUM(CANTIDAD_PENDIENTE) > 0) AND (SUM(CANTIDAD_RECIBIDA) > 0) THEN 'PARCIAL'
- ELSE 'N/A'
-END AS SITUACION
-FROM V_PED_PROV_ARTICULOS
-GROUP BY V_PED_PROV_ARTICULOS.ID_PEDIDO;
-
-CREATE VIEW V_PEDIDOS_PROVEEDOR(
- 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)
-AS
-SELECT
- PEDIDOS_PROVEEDOR.ID,
- PEDIDOS_PROVEEDOR.ID_EMPRESA,
- PEDIDOS_PROVEEDOR.ID_PROVEEDOR,
- V_PROVEEDORES.NOMBRE,
- PEDIDOS_PROVEEDOR.REFERENCIA,
- TRIM(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,
- PEDIDOS_PROVEEDOR.ID_FORMA_PAGO
-FROM
- PEDIDOS_PROVEEDOR
- LEFT OUTER JOIN V_PROVEEDORES ON (PEDIDOS_PROVEEDOR.ID_PROVEEDOR = V_PROVEEDORES.ID)
- LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = PEDIDOS_PROVEEDOR.ID_ALMACEN)
- LEFT OUTER JOIN PEDIDOS_CLIENTE ON (PEDIDOS_CLIENTE.ID = PEDIDOS_PROVEEDOR.ID_PEDIDO_CLIENTE)
- LEFT OUTER JOIN V_PED_PROV_SITUACION ON (V_PED_PROV_SITUACION.ID_PEDIDO = PEDIDOS_PROVEEDOR.ID);
-
-
-DROP VIEW V_ALBARANES_PROVEEDOR;
-
-CREATE VIEW V_ALBARANES_PROVEEDOR(
- 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)
-AS
-SELECT
- ALBARANES_PROVEEDOR.ID,
- ALBARANES_PROVEEDOR.ID_EMPRESA,
- ALBARANES_PROVEEDOR.ID_PROVEEDOR,
- CONTACTOS.NOMBRE,
- ALBARANES_PROVEEDOR.FECHA_ALBARAN,
- ALBARANES_PROVEEDOR.REFERENCIA,
- ALBARANES_PROVEEDOR.REFERENCIA_PROVEEDOR,
- CASE WHEN (ALBARANES_PROVEEDOR.IMPORTE_TOTAL < 0) THEN 'D' ELSE 'A' END AS TIPO,
- ALBARANES_PROVEEDOR.ID_ALMACEN,
- ALMACENES.NOMBRE AS NOMBRE_ALMACEN,
- ALBARANES_PROVEEDOR.ID_PEDIDO,
- PEDIDOS_PROVEEDOR.REFERENCIA AS REF_PED_PROVEEDOR,
- ALBARANES_PROVEEDOR.ID_FACTURA,
- FACTURAS_PROVEEDOR.REFERENCIA AS REF_FACTURA,
- ALBARANES_PROVEEDOR.REF_FACTURA_PROV,
- 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,
- ALBARANES_PROVEEDOR.ID_FORMA_PAGO
-FROM
- ALBARANES_PROVEEDOR
- LEFT OUTER JOIN CONTACTOS ON (CONTACTOS.ID = ALBARANES_PROVEEDOR.ID_PROVEEDOR)
- 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)
- LEFT OUTER JOIN ALMACENES ON (ALMACENES.ID = ALBARANES_PROVEEDOR.ID_ALMACEN);
-
-
-DROP VIEW V_REMESAS_CLIENTE;
-
-CREATE VIEW V_REMESAS_CLIENTE(
- 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,
- IMPORTE_TOTAL)
-AS
-SELECT
- REMESAS_CLIENTE.ID,
- REMESAS_CLIENTE.ID_EMPRESA,
- REMESAS_CLIENTE.REFERENCIA,
- REMESAS_CLIENTE.TIPO,
- 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,
- 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)
-GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17;
-
-
-DROP VIEW V_REMESAS_PROVEEDOR;
-
-CREATE VIEW V_REMESAS_PROVEEDOR(
- 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,
- IMPORTE_TOTAL)
-AS
-SELECT
- REMESAS_PROVEEDOR.ID,
- REMESAS_PROVEEDOR.ID_EMPRESA,
- REMESAS_PROVEEDOR.REFERENCIA,
- REMESAS_PROVEEDOR.TIPO,
- 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,
- SUM(COALESCE(RECIBOS_PROVEEDOR.IMPORTE,0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS,0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL
-
-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)
- LEFT OUTER JOIN V_REC_PRO_COMPENSADOS ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
-GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17;
-
-
-
-
-
-
-
-
-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;
-DROP VIEW V_INV_ENTRADAS_AUX;
-DROP VIEW V_INV_ENTRADAS_MOV;
-DROP VIEW V_INV_ENTRADAS_ALB;
-DROP VIEW V_INV_SALIDAS;
-DROP VIEW V_INV_ENTRADAS_PENDIENTES;
-DROP VIEW V_INV_SALIDAS_AUX;
-DROP VIEW V_INV_SALIDAS_ALB;
-DROP VIEW V_INV_SALIDAS_MOV;
-DROP VIEW V_INV_RESERVAS;
-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;
-DROP VIEW V_ALB_CLI_DETALLES;
-
-/*
-INVENTARIO
-*/
-
-/*Agrupa los artículos de un mismo albarán (ya que en un albarán puede existir varias lineas con el mismo artículo).
- Para cada artículo de albarán le ponemos el pedido con el que esta asociado, la situacion y el almacén de donde salió.
- Se quitan todos los artículos que no tengamos en catálogo (ID_ARTICULO nulo, lineas de detalle libres) -> esta premisa la cambiamos para que
- no se falsee la situación de los pedidos, asi pues todo articulo que no este en el catálogo lo pondremos con ID_ARTICULO 0.
- Se quitan también aquellos que no seán inventariables -> esta premisa falsearía la situació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,
- ALBARANES_CLIENTE.ID_PEDIDO,
- 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
-LEFT JOIN ALBARANES_CLIENTE
-ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = ALBARANES_CLIENTE.ID)
-LEFT JOIN V_ALB_CLI_SITUACION
-ON (ALBARANES_CLIENTE_DETALLES.ID_ALBARAN = V_ALB_CLI_SITUACION.ID)
-
-/*Mantenemos los articulos inventariables y aquellos que no existan en nuestro catálogo con el fin de no falsear la situación de los pedidos
-LEFT JOIN ARTICULOS
-ON (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO = ARTICULOS.ID)
-
-WHERE (ALBARANES_CLIENTE_DETALLES.ID_ARTICULO is not null)
-AND (ARTICULOS.INVENTARIABLE = 1)
-*/
-
-group BY ALBARANES_CLIENTE_DETALLES.ID_ALBARAN,
- ALBARANES_CLIENTE.ID_PEDIDO,
- V_ALB_CLI_SITUACION.SITUACION,
- ALBARANES_CLIENTE.ID_ALMACEN,
- ALBARANES_CLIENTE_DETALLES.ID_ARTICULO;
-
-
-
-/*Todos los articulos reservados en almacén para algún albará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én origen, es decir que no se contabilizarán*/
-/*aquellos albaranes que se manden directamente al cliente sin pasar por almacén*/
-/*Serán salidas en el momento que el albarán este enviado o servido, si esta pendiente estará 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ón y luego una agrupació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
-UNION ALL
-SELECT ID_ALMACEN,
- ID_ARTICULO,
- CANTIDAD
-FROM V_INV_SALIDAS_MOV;
-
-/*Todos los articulos pedidos a proveedor y que todavía no he recibido, y que tienen un almacén destino*/
-
-CREATE VIEW V_INV_ENTRADAS_PENDIENTES(
- ID_ALMACEN,
- ID_ARTICULO,
- CANTIDAD)
-AS
-SELECT PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO, SUM(V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE)
-FROM V_PED_PROV_ARTICULOS
-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;
-
-/*Todas las salidas de almacen, bien por albará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én destino, es decir que no se contabilizará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ón y luego una agrupación que un FULL OUTER JOIN*/
-
-CREATE VIEW V_INV_ENTRADAS_AUX(
- TIPO,
- ID_ALMACEN,
- ID_ARTICULO,
- CANTIDAD)
-AS
-SELECT 'ALB',
- ID_ALMACEN,
- ID_ARTICULO,
- CANTIDAD
-FROM V_INV_ENTRADAS_ALB
-UNION ALL
-SELECT 'MOV',
- ID_ALMACEN,
- ID_ARTICULO,
- CANTIDAD
-FROM V_INV_ENTRADAS_MOV;
-
-
-/*Todas las entradas en almacen, bien por albará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ón y luego una agrupació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
-UNION ALL
-SELECT ID_ALMACEN,
- ID_ARTICULO,
- 0 as CANTIDAD_ENTRADA,
- CANTIDAD as CANTIDAD_SALIDA
-FROM V_INV_SALIDAS;
-
-/* Stock actual por articulo y almacé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
-UNION ALL
-SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, CANTIDAD as PENDIENTES, 0 AS RESERVADAS
-FROM V_INV_ENTRADAS_PENDIENTES
-UNION ALL
-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)
-AND (ARTICULOS.ELIMINADO = 0)
-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;
-
-
-
-/************************************************************************/
-/* HISTORICO MOVIMIENTOS ************************************************/
-/************************************************************************/
-/*Las siguientes vista nos presentará el historico de movimientos de todos los artí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ó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ón ' || ALBARANES_PROVEEDOR.REFERENCIA
- ELSE 'Albará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ón de cliente ' || ALBARANES_CLIENTE.REFERENCIA
- ELSE 'Albará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
-UNION ALL
-SELECT
- FECHA,
- ID_ALMACEN,
- ID_ARTICULO,
- TIPO_MOVIMIENTO,
- CANTIDAD,
- CAUSA
-FROM V_HIS_MOV_ALB_CLI
-UNION ALL
-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,
- REFERENCIA,
- REFERENCIA_PROV,
- 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,
- ARTICULOS.REFERENCIA,
- ARTICULOS.REFERENCIA_PROV,
- ARTICULOS.DESCRIPCION,
- V_HIS_MOV_AUX.TIPO_MOVIMIENTO,
- V_HIS_MOV_AUX.CANTIDAD,
- V_HIS_MOV_AUX.CAUSA
-
-FROM V_HIS_MOV_AUX
-LEFT JOIN ALMACENES ON (ALMACENES.ID = V_HIS_MOV_AUX.ID_ALMACEN)
-LEFT JOIN ARTICULOS ON (ARTICULOS.ID = V_HIS_MOV_AUX.ID_ARTICULO)
-
-WHERE (V_HIS_MOV_AUX.ID_ARTICULO <> 0)
-AND (ARTICULOS.INVENTARIABLE = 1);
-
-
-DROP VIEW V_INV_DETALLE_RESERVAS;
-
-
-/*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én es decir albaranes libres
- que el albaran este pendiente (los articulos estan reservados en el almacen)
- aquellos que no se correspondan con artí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)
-AND (ARTICULOS.ELIMINADO = 0)
-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;
diff --git a/Database/RodaxSoftware.FactuGES.Database.proj b/Database/RodaxSoftware.FactuGES.Database.proj
index 2bb1f7d8..a94e19f5 100644
--- a/Database/RodaxSoftware.FactuGES.Database.proj
+++ b/Database/RodaxSoftware.FactuGES.Database.proj
@@ -25,6 +25,7 @@
+
@@ -40,7 +41,10 @@
WorkingDirectory="$(OutputPath)" />
+ WorkingDirectory="$(OutputPath)" />
+
+
0)
+AND (ARTICULOS.INVENTARIABLE = 1)
+;
+
+
+
+/* View: V_INV_DETALLE_RESERVAS */
+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én es decir albaranes libres
+ que el albaran este pendiente (los articulos estan reservados en el almacen)
+ aquellos que no se correspondan con artí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)
+AND (ARTICULOS.ELIMINADO = 0)
+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
+;
+
+
+
+/* View: V_INV_ENTRADAS_ALB */
+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
+;
+
+
+
+/* View: V_INV_ENTRADAS_MOV */
+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
+;
+
+
+
+/* View: V_INV_ENTRADAS_AUX */
+CREATE VIEW V_INV_ENTRADAS_AUX(
+ TIPO,
+ ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD)
+AS
+SELECT 'ALB',
+ ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD
+FROM V_INV_ENTRADAS_ALB
+UNION ALL
+SELECT 'MOV',
+ ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD
+FROM V_INV_ENTRADAS_MOV
+;
+
+
+
+/* View: V_INV_ENTRADAS */
+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
+;
+
+
+
/* View: V_PED_PROV_ARTICULOS_RECIBIDOS */
CREATE VIEW V_PED_PROV_ARTICULOS_RECIBIDOS(
ID_PEDIDO,
@@ -1909,6 +2651,222 @@ HAVING SUM(CANTIDAD_PEDIDA) IS NOT NULL
+/* View: V_INV_ENTRADAS_PENDIENTES */
+CREATE VIEW V_INV_ENTRADAS_PENDIENTES(
+ ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD)
+AS
+SELECT PEDIDOS_PROVEEDOR.ID_ALMACEN, V_PED_PROV_ARTICULOS.ID_ARTICULO, SUM(V_PED_PROV_ARTICULOS.CANTIDAD_PENDIENTE)
+FROM V_PED_PROV_ARTICULOS
+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
+;
+
+
+
+/* View: V_INV_RESERVAS */
+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
+;
+
+
+
+/* View: V_INV_SALIDAS_ALB */
+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
+;
+
+
+
+/* View: V_INV_SALIDAS_MOV */
+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
+;
+
+
+
+/* View: V_INV_SALIDAS_AUX */
+CREATE VIEW V_INV_SALIDAS_AUX(
+ ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD)
+AS
+SELECT ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD
+FROM V_INV_SALIDAS_ALB
+UNION ALL
+SELECT ID_ALMACEN,
+ ID_ARTICULO,
+ CANTIDAD
+FROM V_INV_SALIDAS_MOV
+;
+
+
+
+/* View: V_INV_SALIDAS */
+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
+;
+
+
+
+/* View: V_INV_STOCK_AUX */
+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
+UNION ALL
+SELECT ID_ALMACEN,
+ ID_ARTICULO,
+ 0 as CANTIDAD_ENTRADA,
+ CANTIDAD as CANTIDAD_SALIDA
+FROM V_INV_SALIDAS
+;
+
+
+
+/* View: V_INV_STOCK */
+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
+;
+
+
+
+/* View: V_INVENTARIO_AUX */
+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
+UNION ALL
+SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, CANTIDAD as PENDIENTES, 0 AS RESERVADAS
+FROM V_INV_ENTRADAS_PENDIENTES
+UNION ALL
+SELECT ID_ALMACEN, ID_ARTICULO, 0 as STOCK, 0 as PENDIENTES, CANTIDAD AS RESERVADAS
+FROM V_INV_RESERVAS
+;
+
+
+
+/* View: V_INVENTARIO */
+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)
+AND (ARTICULOS.ELIMINADO = 0)
+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
+;
+
+
+
/* View: V_PED_PROV_SITUACION */
CREATE VIEW V_PED_PROV_SITUACION(
ID_PEDIDO,
@@ -1960,7 +2918,8 @@ CREATE VIEW V_PROVEEDORES(
ID_FORMA_PAGO,
TIENDA_WEB,
HOMOLOGADO,
- CERTIFICACION)
+ CERTIFICACION,
+ IGNORAR_CONTABILIDAD)
AS
SELECT
V_CONTACTOS.ID,
@@ -1995,7 +2954,8 @@ SELECT
PROVEEDORES_DATOS.ID_FORMA_PAGO,
PROVEEDORES_DATOS.TIENDA_WEB,
PROVEEDORES_DATOS.HOMOLOGADO,
- PROVEEDORES_DATOS.CERTIFICACION
+ PROVEEDORES_DATOS.CERTIFICACION,
+ PROVEEDORES_DATOS.IGNORAR_CONTABILIDAD
FROM
PROVEEDORES_DATOS
INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID)
@@ -2049,7 +3009,7 @@ SELECT
PEDIDOS_PROVEEDOR.ID_PROVEEDOR,
V_PROVEEDORES.NOMBRE,
PEDIDOS_PROVEEDOR.REFERENCIA,
- V_PED_PROV_SITUACION.SITUACION,
+ TRIM(V_PED_PROV_SITUACION.SITUACION),
PEDIDOS_PROVEEDOR.FECHA_ENVIO,
PEDIDOS_PROVEEDOR.FECHA_PEDIDO,
PEDIDOS_PROVEEDOR.FECHA_CONFIRMACION,
@@ -2220,8 +3180,8 @@ SELECT RECIBOS_CLIENTE.ID,
RECIBOS_CLIENTE.REFERENCIA,
CASE
WHEN RECIBOS_CLIENTE.ID_RECIBO_COMPENSADO IS NULL
- THEN V_REC_CLI_SITUACION.SITUACION
- ELSE RECIBO_COMPENSADO2.SITUACION
+ THEN TRIM(V_REC_CLI_SITUACION.SITUACION)
+ ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)
END,
RECIBOS_CLIENTE.ID_FACTURA,
RECIBOS_CLIENTE.ID_REMESA, REMESAS_CLIENTE.REFERENCIA as REFERENCIA_REMESA,
@@ -2303,8 +3263,8 @@ SELECT RECIBOS_PROVEEDOR.ID,
RECIBOS_PROVEEDOR.REFERENCIA_PROVEEDOR,
CASE
WHEN RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO IS NULL
- THEN V_REC_PRO_SITUACION.SITUACION
- ELSE RECIBO_COMPENSADO2.SITUACION
+ THEN TRIM(V_REC_PRO_SITUACION.SITUACION)
+ ELSE TRIM(RECIBO_COMPENSADO2.SITUACION)
END,
RECIBOS_PROVEEDOR.ID_FACTURA,
RECIBOS_PROVEEDOR.ID_REMESA, REMESAS_PROVEEDOR.REFERENCIA as REFERENCIA_REMESA,
@@ -2344,94 +3304,133 @@ LEFT JOIN V_REC_PRO_SITUACION RECIBO_COMPENSADO2
ON (RECIBO_COMPENSADO2.ID_RECIBO = RECIBOS_PROVEEDOR.ID_RECIBO_COMPENSADO)
;
+
+
+/* View: V_REMESAS_CLIENTE */
+CREATE VIEW V_REMESAS_CLIENTE(
+ 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,
+ IMPORTE_TOTAL)
+AS
+SELECT
+ REMESAS_CLIENTE.ID,
+ REMESAS_CLIENTE.ID_EMPRESA,
+ REMESAS_CLIENTE.REFERENCIA,
+ REMESAS_CLIENTE.TIPO,
+ 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,
+ 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)
+GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
+;
+
+
+
+/* View: V_REMESAS_PROVEEDOR */
+CREATE VIEW V_REMESAS_PROVEEDOR(
+ 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,
+ IMPORTE_TOTAL)
+AS
+SELECT
+ REMESAS_PROVEEDOR.ID,
+ REMESAS_PROVEEDOR.ID_EMPRESA,
+ REMESAS_PROVEEDOR.REFERENCIA,
+ REMESAS_PROVEEDOR.TIPO,
+ 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,
+ SUM(COALESCE(RECIBOS_PROVEEDOR.IMPORTE,0) + COALESCE(RECIBOS_PROVEEDOR.OTROS_GASTOS,0) + COALESCE(V_REC_PRO_COMPENSADOS.IMPORTE_TOTAL_COMPENSADO,0)) as IMPORTE_TOTAL
+
+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)
+ LEFT OUTER JOIN V_REC_PRO_COMPENSADOS ON (V_REC_PRO_COMPENSADOS.ID_RECIBO = RECIBOS_PROVEEDOR.ID)
+GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
+;
+
+
+
+
/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/
-ALTER TABLE AGENTES_COMISIONES ADD CONSTRAINT PK_AGENTES_COMISIONES PRIMARY KEY (ID);
-ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARAN_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE ALBARANES_CLIENTE_DETALLES ADD CONSTRAINT PK_ALBARANES_CLIENTE_DETALLES PRIMARY KEY (ID);
-ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT PK_ALBARAN_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE ALBARANES_PROVEEDOR_DETALLES ADD CONSTRAINT PK_ALBARANES_PROVEEDOR_DETALLES PRIMARY KEY (ID);
-ALTER TABLE ALMACENES ADD CONSTRAINT PK_ALMACENES PRIMARY KEY (ID);
-ALTER TABLE ARTICULOS ADD CONSTRAINT PK_ARTICULOS PRIMARY KEY (ID);
-ALTER TABLE CATEGORIAS ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID);
-ALTER TABLE CLIENTES_DATOS ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIENTE);
-ALTER TABLE CLIENTES_DTOS_PROVEEDORES ADD CONSTRAINT PK_CLIENTES_DTOS_PROV PRIMARY KEY (ID);
-ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT PK_COMISIONES_LIQUIDADAS PRIMARY KEY (ID);
-ALTER TABLE CONTACTOS ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID);
-ALTER TABLE CONTACTOS_CATEGORIAS ADD CONSTRAINT PK_CONTACTOS_CATEGORIAS PRIMARY KEY (ID_CONTACTO, ID_CATEGORIA);
-ALTER TABLE CONTACTOS_DATOS_BANCO ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMARY KEY (ID);
-ALTER TABLE CONTACTOS_DIRECCIONES ADD CONSTRAINT PK_CONTACTOS_DIR PRIMARY KEY (ID);
-ALTER TABLE EMPLEADOS_DATOS ADD CONSTRAINT PK_EMPLEADOS_DATOS PRIMARY KEY (ID_EMPLEADO);
-ALTER TABLE EMPRESAS ADD CONSTRAINT PK_EMPRESAS PRIMARY KEY (ID);
-ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT PK_EMPRESAS_CONTACTOS PRIMARY KEY (ID_EMPRESA, ID_CONTACTO);
-ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT PK_EMPRESAS_DATOS_BANCO PRIMARY KEY (ID);
-ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT PK_EMPRESAS_USUARIOS PRIMARY KEY (ID_EMPRESA, ID_USUARIO);
-ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID);
-ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT PK_FACTURAS_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_FACTURAS_PROVEEDOR_DETALLES PRIMARY KEY (ID);
-ALTER TABLE FORMAS_PAGO ADD PRIMARY KEY (ID);
-ALTER TABLE FORMAS_PAGO_PLAZOS ADD PRIMARY KEY (ID);
-ALTER TABLE F_PERFILES_USUARIOS ADD CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO);
-ALTER TABLE INFORMES ADD CONSTRAINT PK_INFORMES PRIMARY KEY (ID);
-ALTER TABLE MOVIMIENTOS ADD CONSTRAINT PK_MOVIMIENTOS PRIMARY KEY (ID);
-ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT PK_PAGOS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT PK_PAGOS_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT PK_PEDIDOS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE PEDIDOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PEDIDOS_CLIENTE_DETALLES PRIMARY KEY (ID);
-ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID);
-ALTER TABLE PRESUPUESTOS_CLIENTE ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE PRESUPUESTOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PRESUPUESTOS_CLIENTE_DETALLE PRIMARY KEY (ID);
-ALTER TABLE PROVEEDORES_DATOS ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR);
-ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT PK_RECIBOS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT PK_RECIBOS_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT PK_REMESAS_CLIENTE PRIMARY KEY (ID);
-ALTER TABLE REMESAS_PROVEEDOR ADD CONSTRAINT PK_REMESAS_PROVEEDOR PRIMARY KEY (ID);
-ALTER TABLE TIENDA_WEB ADD CONSTRAINT PK_TIENDA_WEB PRIMARY KEY (ID);
-ALTER TABLE TIPOS_IVA ADD PRIMARY KEY (ID);
-ALTER TABLE USUARIOS ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID);
-ALTER TABLE USUARIOS_LOGON ADD CONSTRAINT PK_USUARIOS_LOGON PRIMARY KEY (LOGONID);
+ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARANES_CLIENTE PRIMARY KEY (ID);
+ALTER TABLE CONT_APUNTES ADD CONSTRAINT PK_CONT_APUNTES PRIMARY KEY (ID);
+ALTER TABLE CONT_ASIENTOS ADD CONSTRAINT PK_CONT_ASIENTOS PRIMARY KEY (ID);
+ALTER TABLE CONT_BALANCES ADD CONSTRAINT PK_CONT_BALANCES PRIMARY KEY (ID);
+ALTER TABLE CONT_CUENTAS ADD CONSTRAINT PK_CONT_CUENTAS PRIMARY KEY (ID);
+ALTER TABLE CONT_CUENTAS_ESPECIALES ADD CONSTRAINT PK_CONT_CUENTAS_ESPECIALES PRIMARY KEY (ID);
+ALTER TABLE CONT_EJERCICIOS ADD CONSTRAINT PK_CONT_EJERCICIOS PRIMARY KEY (ID);
+ALTER TABLE CONT_EPIGRAFES ADD CONSTRAINT PK_CONT_EPIGRAFES PRIMARY KEY (ID);
+ALTER TABLE CONT_SUBCUENTAS ADD CONSTRAINT PK_CONT_SUBCUENTAS PRIMARY KEY (ID);
/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/
-ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE1 FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL;
-ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARANES_PROVEEDOR4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE CASCADE;
-ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR1 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ALMACENES ADD CONSTRAINT FK_ALMACENES_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE COMISIONES_LIQUIDADAS ADD CONSTRAINT FK_COMISIONES_LIQUIDADAS FOREIGN KEY (ID_AGENTE) REFERENCES CONTACTOS (ID);
-ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT FK_EMPRESAS_CONTACTOS FOREIGN KEY (ID_CONTACTO) REFERENCES CONTACTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE EMPRESAS_DATOS_BANCO ADD CONSTRAINT FK_EMPRESAS_DATOS_BANCO FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE FACTURAS_PROVEEDOR ADD CONSTRAINT FK_FACTURAS_PROVEEDOR_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION;
-ALTER TABLE FACTURAS_PROVEEDOR_DETALLES ADD CONSTRAINT FK_FACTURAS_PRO_DET_ID_FACTURA FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS FOREIGN KEY (ID_ARTICULO) REFERENCES ARTICULOS (ID);
-ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS2 FOREIGN KEY (ID_ALMACEN) REFERENCES ALMACENES (ID);
-ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT FK_PAGOS_CLIENTE FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_CLIENTE (ID);
-ALTER TABLE PAGOS_PROVEEDOR ADD CONSTRAINT FK_PAGOS_PROVEEDOR FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_PROVEEDOR (ID);
-ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID);
-ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT FK_PEDIDOS_CLIENTE_ID_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
-ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
-ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID);
-ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT FK_PEDIDOS_PROV_DET_ID_PEDIDO FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE2 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL;
-ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_PROVEEDOR (ID) ON DELETE CASCADE ON UPDATE CASCADE;
-ALTER TABLE RECIBOS_PROVEEDOR ADD CONSTRAINT FK_RECIBOS_PROVEEDOR1 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE SET NULL;
-ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT FK_REMESAS_CLIENTE FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
-ALTER TABLE REMESAS_PROVEEDOR ADD CONSTRAINT FK_REMESAS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID);
-ALTER TABLE TIENDA_WEB ADD CONSTRAINT FK_EMPRESAS_TIENDA_WEB FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE CONT_CUENTAS ADD CONSTRAINT FK_CONT_CUENTAS_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE CONT_EPIGRAFES ADD CONSTRAINT FK_CONT_EPIGRAFES_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
+ALTER TABLE CONT_SUBCUENTAS ADD CONSTRAINT FK_CONT_SUBCUENTAS_1 FOREIGN KEY (ID_EJERCICIO) REFERENCES CONT_EJERCICIOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
/******************************************************************************/
@@ -2486,3 +3485,425 @@ CREATE INDEX IDX_RECIBOS_PROVEEDOR ON RECIBOS_PROVEEDOR (ID_RECIBO_COMPENSADO);
CREATE INDEX IDX_REFERENCIAS ON REFERENCIAS (ID_EMPRESA);
CREATE INDEX IDX_REMESAS_CLIENTE ON REMESAS_CLIENTE (ID_DATOS_BANCO);
CREATE INDEX IDX_REMESAS_PROVEEDOR ON REMESAS_PROVEEDOR (ID_DATOS_BANCO);
+
+
+/******************************************************************************/
+/**** Stored Procedures ****/
+/******************************************************************************/
+
+
+SET TERM ^ ;
+
+ALTER PROCEDURE PROC_DELETE_ASIENTO_FACTURA (
+ IDFACTURA INTEGER)
+AS
+declare variable idasiento integer;
+begin
+ SELECT ID FROM CONT_ASIENTOS
+ WHERE ID_FACTURA = :IDFACTURA INTO :IDASIENTO;
+
+ DELETE FROM CONT_APUNTES
+ WHERE ID_ASIENTO = :IDASIENTO;
+
+ DELETE FROM CONT_ASIENTOS
+ WHERE ID = :IDASIENTO;
+
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_DELETE_ASIENTO_PAGO (
+ IDPAGO INTEGER)
+AS
+declare variable idasiento integer;
+begin
+ SELECT ID FROM CONT_ASIENTOS
+ WHERE ID_PAGO = :IDPAGO INTO :IDASIENTO;
+
+ DELETE FROM CONT_APUNTES
+ WHERE ID_ASIENTO = :IDASIENTO;
+
+ DELETE FROM CONT_ASIENTOS
+ WHERE ID = :IDASIENTO;
+
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_ASIENTO_FACTURA (
+ IDFACTURA INTEGER)
+AS
+declare variable ignorarcontabilidad integer;
+declare variable referenciafactura varchar(255);
+declare variable fechafactura date;
+declare variable baseimponible numeric(11,2);
+declare variable idsubcuenta integer;
+declare variable idasiento integer;
+declare variable idejercicio integer;
+declare variable orden integer;
+declare variable importetotal numeric(11,2);
+declare variable importeiva numeric(11,2);
+declare variable importere numeric(11,2);
+begin
+ /*BUSCAMOS LA FACTURA DE LA QUE COMPROBAR SI HACER ASIENTO*/
+ SELECT FACTURAS_CLIENTE.IGNORAR_CONTABILIDAD, FACTURAS_CLIENTE.REFERENCIA, FACTURAS_CLIENTE.FECHA_FACTURA,
+ FACTURAS_CLIENTE.BASE_IMPONIBLE, FACTURAS_CLIENTE.IMPORTE_IVA, FACTURAS_CLIENTE.IMPORTE_RE, FACTURAS_CLIENTE.IMPORTE_TOTAL,
+ CONT_SUBCUENTAS.ID, CONT_SUBCUENTAS.ID_EJERCICIO
+ FROM FACTURAS_CLIENTE
+ LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID_CONTACTO = FACTURAS_CLIENTE.ID_CLIENTE)
+ WHERE FACTURAS_CLIENTE.ID = :IDFACTURA INTO :IGNORARCONTABILIDAD, :REFERENCIAFACTURA,
+ :FECHAFACTURA, :BASEIMPONIBLE, :IMPORTEIVA, :IMPORTERE, :IMPORTETOTAL, :IDSUBCUENTA, :IDEJERCICIO;
+
+ SELECT ID FROM CONT_ASIENTOS
+ WHERE ID_FACTURA = :IDFACTURA INTO :IDASIENTO;
+
+ /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/
+ DELETE FROM CONT_APUNTES
+ WHERE ID_ASIENTO = :IDASIENTO;
+
+ /*EN EL CASO DE QUE SE DESEE IGNORAR LA FACTURA EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/
+ if (IGNORARCONTABILIDAD <> 0) then
+ BEGIN
+ DELETE FROM CONT_ASIENTOS
+ WHERE ID = :IDASIENTO;
+ END
+ /*EN EL DE CONTABILIZAR LA FACTURA COMPROBAMOS SI EXISTE ASIENTO ASOCIADO A LA FACTURA*/
+ ELSE
+ BEGIN
+ /*MODIFICAMOS LOS DATOS DEL ASIENTO*/
+ IF (IDASIENTO <> 0) THEN
+ BEGIN
+ UPDATE CONT_ASIENTOS
+ SET FECHA_ASIENTO = :FECHAFACTURA
+ WHERE ID = :IDASIENTO;
+ END
+ /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/
+ ELSE
+ BEGIN
+ SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1
+ FROM V_CONT_DIARIO
+ WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO
+ INTO :IDASIENTO, :ORDEN;
+
+ INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_FACTURA)
+ VALUES (:IDASIENTO, :FECHAFACTURA, :ORDEN, :IDFACTURA);
+ END
+
+ /*INSERTAMOS LOS APUNTES*/
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, 'FACTURA DE CLIENTE',
+ :REFERENCIAFACTURA, :IMPORTETOTAL, NULL);
+
+ IF (IMPORTEIVA <> 0) THEN
+ BEGIN
+ SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS
+ LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA)
+ WHERE CONT_CUENTAS.REF_CUENTA = '477'
+ AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO
+ INTO :IDSUBCUENTA;
+
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 2, 'IVA FACTURA DE CLIENTE',
+ :REFERENCIAFACTURA, NULL, :IMPORTEIVA);
+ END
+
+ IF (IMPORTERE <> 0) THEN
+ BEGIN
+ SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS
+ LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA)
+ WHERE CONT_CUENTAS.REF_CUENTA = '475'
+ AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO
+ INTO :IDSUBCUENTA;
+
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 3, 'RE FACTURA DE CLIENTE',
+ :REFERENCIAFACTURA, NULL, :IMPORTERE);
+ END
+
+ IF (BASEIMPONIBLE <> 0) THEN
+ BEGIN
+ SELECT CONT_SUBCUENTAS.ID FROM CONT_SUBCUENTAS
+ LEFT JOIN CONT_CUENTAS ON (CONT_CUENTAS.ID = CONT_SUBCUENTAS.ID_CUENTA)
+ WHERE CONT_CUENTAS.REF_CUENTA = '700'
+ AND CONT_SUBCUENTAS.ID_EJERCICIO = :IDEJERCICIO
+ INTO :IDSUBCUENTA;
+
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 4, 'BASE IMPONIBLE FACTURA DE CLIENTE',
+ :REFERENCIAFACTURA, NULL, :BASEIMPONIBLE);
+ END
+ END
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_ASIENTO_PAGO (
+ IDPAGO INTEGER,
+ IDSUBCUENTAPAGO INTEGER)
+AS
+declare variable ignorarcontabilidad integer;
+declare variable referenciarecibo varchar(255);
+declare variable fechapago date;
+declare variable tipopago varchar(255);
+declare variable importe numeric(11,2);
+declare variable idsubcuenta integer;
+declare variable idasiento integer;
+declare variable idejercicio integer;
+declare variable orden integer;
+declare variable debe numeric(11,2);
+declare variable haber numeric(11,2);
+begin
+ /*BUSCAMOS EL PAGO PARA COMPROBAR SI HACER ASIENTO*/
+ SELECT PAGOS_CLIENTE.IGNORAR_CONTABILIDAD, RECIBOS_CLIENTE.REFERENCIA, PAGOS_CLIENTE.FECHA_PAGO, PAGOS_CLIENTE.TIPO,
+ RECIBOS_CLIENTE.IMPORTE, CONT_SUBCUENTAS.ID, CONT_SUBCUENTAS.ID_EJERCICIO
+ FROM PAGOS_CLIENTE
+ LEFT JOIN RECIBOS_CLIENTE ON (RECIBOS_CLIENTE.ID = PAGOS_CLIENTE.ID_RECIBO)
+ LEFT JOIN FACTURAS_CLIENTE ON (FACTURAS_CLIENTE.ID = RECIBOS_CLIENTE.ID_FACTURA)
+ LEFT JOIN CONT_SUBCUENTAS ON (CONT_SUBCUENTAS.ID_CONTACTO = FACTURAS_CLIENTE.ID_CLIENTE)
+ WHERE PAGOS_CLIENTE.ID = :IDPAGO INTO :IGNORARCONTABILIDAD, :REFERENCIARECIBO,
+ :FECHAPAGO, :TIPOPAGO, :IMPORTE, :IDSUBCUENTA, :IDEJERCICIO;
+
+ SELECT ID FROM CONT_ASIENTOS
+ WHERE ID_PAGO = :IDPAGO INTO :IDASIENTO;
+
+ /*SIEMPRE ELIMIAREMOS LOS APUNTES EXISTENTES DEL ASIENTO PARA VOLVERLOS A GENERAR*/
+ DELETE FROM CONT_APUNTES
+ WHERE ID_ASIENTO = :IDASIENTO;
+
+ /*EN EL CASO DE QUE SE DESEE IGNORAR EL PAGO EN CONTABILIDAD BORRAMOS EL ASIENTO Y SE ACABO*/
+ if (IGNORARCONTABILIDAD <> 0) then
+ BEGIN
+ DELETE FROM CONT_ASIENTOS
+ WHERE ID = :IDASIENTO;
+ END
+ /*EN EL DE CONTABILIZAR EL PAGO COMPROBAMOS SI EXISTE ASIENTO ASOCIADO AL PAGO*/
+ ELSE
+ BEGIN
+ /*MODIFICAMOS LOS DATOS DEL ASIENTO*/
+ IF (IDASIENTO <> 0) THEN
+ BEGIN
+ UPDATE CONT_ASIENTOS
+ SET FECHA_ASIENTO = :FECHAPAGO
+ WHERE ID = :IDASIENTO;
+ END
+ /*INSERTAMOS LOS DATOS DEL NUEVO ASIENTO*/
+ ELSE
+ BEGIN
+ SELECT GEN_ID(GEN_CONT_ASIENTOS_ID, 1), COALESCE(max(V_CONT_DIARIO.ORDEN_ASIENTO),0) + 1
+ FROM V_CONT_DIARIO
+ WHERE V_CONT_DIARIO.ID_EJERCICIO = :IDEJERCICIO
+ INTO :IDASIENTO, :ORDEN;
+
+ INSERT INTO CONT_ASIENTOS (ID, FECHA_ASIENTO, ORDEN, ID_PAGO)
+ VALUES (:IDASIENTO, :FECHAPAGO, :ORDEN, :IDPAGO);
+ END
+
+ /*INSERTAMOS LOS APUNTES*/
+ if (TIPOPAGO = 'Pago') then
+ begin
+ DEBE = NULL;
+ HABER = :IMPORTE;
+ end
+ else
+ begin
+ DEBE = :IMPORTE;
+ HABER = NULL;
+ end
+
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTA, 1, :TIPOPAGO,
+ :REFERENCIARECIBO, :DEBE, :HABER);
+
+ INSERT INTO CONT_APUNTES (ID, ID_ASIENTO, ID_SUBCUENTA, NUM_ORDEN, CONCEPTO, DOCUMENTO, DEBE, HABER)
+ VALUES (GEN_ID(GEN_CONT_APUNTES_ID, 1), :IDASIENTO, :IDSUBCUENTAPAGO, 1, :TIPOPAGO,
+ :REFERENCIARECIBO, :HABER, :DEBE);
+
+ END
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_CUENTAS (
+ ID_EJERCICIO_COPIA INTEGER,
+ ID_EJERCICIO INTEGER,
+ ID_EPIGRAFE_COPIA INTEGER,
+ ID_EPIGRAFE INTEGER)
+AS
+declare variable id_cuenta_especial integer;
+declare variable id_balance integer;
+declare variable id_cuenta integer;
+declare variable id_cuenta_copia integer;
+declare variable descripcion varchar(255);
+declare variable ref_cuenta varchar(10);
+begin
+ if (id_ejercicio_copia = 0) then
+ begin
+ for select GEN_ID(gen_cont_cuentas_id, 1), ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL
+ from CONT_CUENTAS where (ID_EJERCICIO IS NULL) and (ID_EPIGRAFE = :id_epigrafe_copia)
+ order by ID
+ into :id_cuenta, :id_cuenta_copia, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial do
+ begin
+ insert into CONT_CUENTAS (ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL, ID_EJERCICIO, ID_EPIGRAFE)
+ values (:id_cuenta, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial, :id_ejercicio, :id_epigrafe);
+
+ /*INSERTAR SUBCUENTAS*/
+ execute procedure proc_new_subcuentas :id_ejercicio_copia, :id_ejercicio, :id_cuenta_copia, :id_cuenta;
+ end
+ end
+ else
+ begin
+ for select GEN_ID(gen_cont_cuentas_id, 1), ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL
+ from CONT_CUENTAS where (ID_EJERCICIO = :id_ejercicio_copia) and (ID_EPIGRAFE = :id_epigrafe_copia)
+ order by ID
+ into :id_cuenta, :id_cuenta_copia, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial do
+ begin
+ insert into CONT_CUENTAS (ID, REF_CUENTA, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL, ID_EJERCICIO, ID_EPIGRAFE)
+ values (:id_cuenta, :ref_cuenta, :descripcion, :id_balance, :id_cuenta_especial, :id_ejercicio, :id_epigrafe);
+
+ /*INSERTAR SUBCUENTAS*/
+ execute procedure proc_new_subcuentas :id_ejercicio_copia, :id_ejercicio, :id_cuenta_copia, :id_cuenta;
+ end
+ end
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_EPIGRAFES (
+ ID_EJERCICIO_COPIA INTEGER,
+ ID_EJERCICIO INTEGER,
+ ID_EPIGRAFE_COPIA INTEGER,
+ ID_EPIGRAFE INTEGER,
+ ID_PADRE INTEGER,
+ REF_EPIGRAFE VARCHAR(6),
+ DESCRIPCION VARCHAR(255))
+AS
+begin
+ insert into CONT_EPIGRAFES (ID, REF_EPIGRAFE, DESCRIPCION, ID_EJERCICIO)
+ values (:id_epigrafe, :ref_epigrafe, :descripcion, :id_ejercicio);
+
+ /*MIRAMOS EL NUEVO ID CORREPONDIENTE AL PADRE*/
+ if (id_padre <> 0) then
+ begin
+ select REF_EPIGRAFE from cont_epigrafes
+ where (ID = :id_padre)
+ into :ref_epigrafe;
+
+ select ID
+ from cont_epigrafes
+ where (REF_EPIGRAFE = :ref_epigrafe and ID_EJERCICIO = :ID_ejercicio)
+ into :id_padre;
+ end
+
+ /*ASIGNAMOS EL ID DEL PADRE*/
+ update cont_epigrafes
+ set ID_PADRE = :id_padre
+ where (ID = :id_epigrafe);
+
+ /*INSERTAR CUENTAS*/
+ execute procedure proc_new_cuentas :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe;
+
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_PGC (
+ ID_EJERCICIO_COPIA INTEGER,
+ ID_EJERCICIO INTEGER)
+RETURNS (
+ RESULTADO INTEGER)
+AS
+declare variable id_epigrafe_copia integer;
+declare variable ref_epigrafe varchar(6);
+declare variable swhere integer;
+declare variable descripcion varchar(255);
+declare variable id_padre integer;
+declare variable id_epigrafe integer;
+declare variable id_ejercicio_acopiar integer;
+begin
+ select ID
+ from CONT_EJERCICIOS
+ WHERE ID = :id_ejercicio_copia
+ into :id_ejercicio_acopiar;
+
+ /* SI EL EJERCICIO DE COPIA NO EXISTE COPIAMOS EL PGC BASICO*/
+ if (id_ejercicio_acopiar is null) then
+ begin
+ for select GEN_ID(gen_cont_epigrafes_id, 1), ID, REF_EPIGRAFE, DESCRIPCION, ID_PADRE
+ from CONT_EPIGRAFES where (ID_EJERCICIO IS NULL)
+ order by ID, ID_PADRE
+ into :id_epigrafe, :id_epigrafe_copia, :ref_epigrafe, :descripcion, :id_padre do
+ begin
+ /*INSERTAR EPIGRAFES*/
+ execute procedure proc_new_epigrafes :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe, :id_padre, :ref_epigrafe, :descripcion;
+ end
+ end
+ /* SI EL EJERCICIO DE COPIA EXISTE COPIAMOS EL PGC DEL EJERCICIO*/
+ else
+ begin
+ for select GEN_ID(gen_cont_epigrafes_id, 1), ID, REF_EPIGRAFE, DESCRIPCION, ID_PADRE
+ from CONT_EPIGRAFES where (ID_EJERCICIO = :id_ejercicio_copia)
+ order by ID, ID_PADRE
+ into :id_epigrafe, :id_epigrafe_copia, :ref_epigrafe, :descripcion, :id_padre do
+ begin
+ /*INSERTAR EPIGRAFES*/
+ execute procedure proc_new_epigrafes :id_ejercicio_copia, :id_ejercicio, :id_epigrafe_copia, :id_epigrafe, :id_padre, :ref_epigrafe, :descripcion;
+ end
+ end
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_NEW_SUBCUENTAS (
+ ID_EJERCICIO_COPIA INTEGER,
+ ID_EJERCICIO INTEGER,
+ ID_CUENTA_COPIA INTEGER,
+ ID_CUENTA INTEGER)
+AS
+declare variable descripcion varchar(255);
+declare variable ref_subcuenta varchar(15);
+declare variable id_subcuenta integer;
+begin
+ if (id_ejercicio_copia = 0) then
+ begin
+ for select GEN_ID(gen_cont_subcuentas_id, 1), REF_SUBCUENTA, DESCRIPCION
+ from CONT_SUBCUENTAS
+ where (ID_EJERCICIO IS NULL) and (ID_CUENTA = :id_cuenta_copia)
+ order by ID
+ into :id_subcuenta, :ref_subcuenta, :descripcion do
+ begin
+ insert into CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ID_CUENTA)
+ values (:id_subcuenta, :ref_subcuenta, :descripcion, :id_ejercicio, :id_cuenta);
+ end
+ end
+ else
+ begin
+ for select GEN_ID(gen_cont_subcuentas_id, 1), REF_SUBCUENTA, DESCRIPCION
+ from CONT_SUBCUENTAS
+ where (ID_EJERCICIO = :id_ejercicio_copia) and (ID_CUENTA = :id_cuenta_copia)
+ order by ID
+ into :id_subcuenta, :ref_subcuenta, :descripcion do
+ begin
+ insert into CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_EJERCICIO, ID_CUENTA)
+ values (:id_subcuenta, :ref_subcuenta, :descripcion, :id_ejercicio, :id_cuenta);
+ end
+ end
+ suspend;
+end
+^
+
+ALTER PROCEDURE PROC_SET_EJERCICIOS_NOACTIVOS (
+ ID_EMPRESA INTEGER)
+AS
+begin
+ update CONT_EJERCICIOS
+ set ACTIVO = 0
+ where ID_EMPRESA = :id_empresa;
+
+ suspend;
+end
+^
+
+
+SET TERM ; ^
+
+
diff --git a/Database/scripts/factuges_sysdata.sql b/Database/scripts/factuges_sysdata.sql
index da21b376..aef5d42c 100644
--- a/Database/scripts/factuges_sysdata.sql
+++ b/Database/scripts/factuges_sysdata.sql
@@ -8,6 +8,21 @@ INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (3, 'EMPLEADO');
SET GENERATOR GEN_CATEGORIAS_ID TO 4;
COMMIT WORK;
+INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (1, 'CONTADO', 'CONTADO', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (2, 'A30', 'A 30 DIAS', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO FORMAS_PAGO (ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCURSAL, DC, CUENTA) VALUES (3, 'A306090', 'A 30 60 90 DIAS', NULL, NULL, NULL, NULL, NULL);
+SET GENERATOR GEN_FORMAS_PAGO_ID TO 4;
+COMMIT WORK;
+
+INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (1, 1, 0, 100);
+INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (2, 2, 30, 100);
+INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (3, 3, 30, 33.3300018310547);
+INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (4, 3, 60, 33.3300018310547);
+INSERT INTO FORMAS_PAGO_PLAZOS (ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE) VALUES (5, 3, 90, 33.3300018310547);
+SET GENERATOR GEN_FORMAS_PAGO_PLAZOS_ID TO 6;
+COMMIT WORK;
+
+
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (1, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por artículo', 'Informe de ventas por artículo', NULL, 'S');
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (2, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por cliente', 'Informe de ventas por cliente y artículo', NULL, 'S');
INSERT INTO INFORMES (ID, ID_EMPRESA, CATEGORIA, CONTROLLER, ICONO, NOMBRE, DESCRIPCION, ORDEN, MODIFICABLE) VALUES (3, 1, 'VENTAS ARTICULOS', 'InfVentasArticuloController', 4, 'Ventas por agente y cliente', 'Informe de ventas por agente y cliente', NULL, 'S');
diff --git a/Database/scripts/SCRIPT_DATOS_PLAN_GENERAL_CONTABLE.SQL b/Database/scripts/factuges_sysdata_plan_general_contable.sql
similarity index 99%
rename from Database/scripts/SCRIPT_DATOS_PLAN_GENERAL_CONTABLE.SQL
rename to Database/scripts/factuges_sysdata_plan_general_contable.sql
index 95cc661c..c7f901c0 100644
--- a/Database/scripts/SCRIPT_DATOS_PLAN_GENERAL_CONTABLE.SQL
+++ b/Database/scripts/factuges_sysdata_plan_general_contable.sql
@@ -24,7 +24,8 @@ INSERT INTO CONT_CUENTAS_ESPECIALES VALUES (17, 'PREVIO', 'Cuentas relativas al
INSERT INTO CONT_CUENTAS_ESPECIALES VALUES (18, 'PROVEE', 'Cuentas de proveedores');
INSERT INTO CONT_CUENTAS_ESPECIALES VALUES (19, 'PYG', 'Pérdidas y ganancias');
INSERT INTO CONT_CUENTAS_ESPECIALES VALUES (20, 'VENTAS', 'Cuentas de ventas');
-
+SET GENERATOR GEN_CONT_CUENTAS_ESP_ID TO 21;
+COMMIT;
/*********************************************************************************/
/*********************************************************************************/
@@ -103,7 +104,8 @@ INSERT INTO CONT_EPIGRAFES VALUES (68, '75', 63, '75. OTROS INGRESOS DE GESTION'
INSERT INTO CONT_EPIGRAFES VALUES (69, '76', 63, '76. INGRESOS FINANCIEROS', NULL);
INSERT INTO CONT_EPIGRAFES VALUES (70, '77', 63, '77. BENEFICIOS PROCEDENTES DEL INMOVILIZADO E INGRESOS EXCEPCIONALES', NULL);
INSERT INTO CONT_EPIGRAFES VALUES (71, '79', 63, '79. EXCESOS Y APLICACIONES DE PROVISIONES', NULL);
-
+SET GENERATOR GEN_CONT_EPIGRAFES_ID TO 72;
+COMMIT;
/*********************************************************************************/
/*********************************************************************************/
@@ -330,7 +332,8 @@ INSERT INTO CONT_BALANCES VALUES (216,'P-E-VI', 'PASIVO', 'E', 'E) ACREEDORES A
INSERT INTO CONT_BALANCES VALUES (217,'P-E-VII', 'PASIVO', 'E', 'E) ACREEDORES A CORTO PLAZO', 'VII', 'VII. Ajustes por periodificación', '', '');
INSERT INTO CONT_BALANCES VALUES (218,'P-F', 'PASIVO', 'F', 'F) PROVISIONES PARA RIESGOS Y GASTOS A CORTO PLAZO', '', '', '', '');
INSERT INTO CONT_BALANCES VALUES (219,'P-G', 'PASIVO', 'G', 'TOTAL PASIVO', '', '', '', '');
-
+SET GENERATOR GEN_CONT_BALANCES_ID TO 220;
+COMMIT;
/*********************************************************************************/
/*********************************************************************************/
@@ -953,7 +956,7 @@ INSERT INTO CONT_CUENTAS (ID, REF_CUENTA, ID_EJERCICIO, ID_EPIGRAFE, DESCRIPCION
INSERT INTO CONT_CUENTAS (ID, REF_CUENTA, ID_EJERCICIO, ID_EPIGRAFE, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL) VALUES (611, '7990', NULL, 71, '7990. Exceso de provisión para insolvencias de créditos a c/p de empresas del grupo', 93, NULL);
INSERT INTO CONT_CUENTAS (ID, REF_CUENTA, ID_EJERCICIO, ID_EPIGRAFE, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL) VALUES (612, '7991', NULL, 71, '7991. Exceso de provisión para insolvencias de créditos a c/p de empresas asociadas', 93, NULL);
INSERT INTO CONT_CUENTAS (ID, REF_CUENTA, ID_EJERCICIO, ID_EPIGRAFE, DESCRIPCION, ID_BALANCE, ID_CUENTA_ESPECIAL) VALUES (613, '7993', NULL, 71, '7993. Exceso de provisión para insolvencias de créditos a c/p de otras empresas', 93, NULL);
-
+SET GENERATOR GEN_CONT_CUENTAS_ID TO 614;
COMMIT WORK;
@@ -1579,5 +1582,5 @@ INSERT INTO CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_CUENTA, ID_EJERC
INSERT INTO CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_CUENTA, ID_EJERCICIO) VALUES (611, '7990000001', '7990. Exceso de provisión para insolvencias de créditos a c/p de empresas del grupo', 611, NULL);
INSERT INTO CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_CUENTA, ID_EJERCICIO) VALUES (612, '7991000000', '7991. Exceso de provisión para insolvencias de créditos a c/p de empresas asociadas', 612, NULL);
INSERT INTO CONT_SUBCUENTAS (ID, REF_SUBCUENTA, DESCRIPCION, ID_CUENTA, ID_EJERCICIO) VALUES (613, '7993000000', '7993. Exceso de provisión para insolvencias de créditos a c/p de otras empresas', 613, NULL);
-
+SET GENERATOR GEN_CONT_SUBCUENTAS_ID TO 614;
COMMIT WORK;