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;