Facturación y cobro de contratos de proyectos Descripción El objetivo es optimizar el proceso de facturación y cobro cuando la empresa vende suscripciones y/o servicios. En estos casos la facturación es mensual y se cobran los mismos items cada mes, con la opción de descuento si se pagan antes de un día del mes. Hay tres momentos clave en este proceso: La configuración de los cobros del proyecto (fecha, monto, detalle), en el sistema se llaman contratos La facturación El cobro Esta adición fue solicitada para operar los cobros de un colegio. Configuración de los contratos Tomando en cuenta que hay que operar la factura y luego revisar que esté correcta, decidimos que es mejor que el encargado de revisar configure los códigos, descripciones y montos a facturar en cada contrato del proyecto, así el operador no tendrá que decidir, sino que usará lo configurado. Para el caso en que se ofrece un descuento por pago antes del día límite, cada contrato requiere dos montos: el normal y el descontado, también cada línea de detalle requiere configurar el precio normal y el descuento Facturación Hay dos modalidades de facturación: Facturar para luego cobrar (típico de servicios que se pueden cancelar o interrumpir entre meses). Facturar lo cobrado (típico de contratos que no se pueden interrumpir). Cuando se factura y luego se cobra, como ya está configurado el detalle de cada contrato del proyecto, lo único necesario es generar las facturas que corresponden al mes. Cuando se factura hasta que se cobra, lo que corresponde es operar la transacción bancaria y luego generar y asociar las facturas de lo cobrado. Cobro En la modalidad 1 (Facturar y luego cobrar), se asocia la factura ya hecha al cobro. El cobro puede cubrir una parte de la factura y no es necesario saber a qué contrato corresponde cada factura, ya que se emite una factura por contrato; las facturas emitidas con saldo por cobrar aparecerán en el estado de cuenta del proyecto. En la modalidad 2 (Facturar lo cobrado), al recibir el cobro el proceso es el siguiente: Operar la transacción bancaria. Elegir los proyectos a los cuales aplicar el cobro. Si hay facturas anteriores con saldo en estos proyectos, liquidar desde la más antigua a la más reciente, y si varias tienen la misma antigüedad del mayor al menor saldo. Si aún queda algo del monto de la transacción por liquidar, elegir los contratos más antiguos por facturar de estos proyectos, y si hay varios de la misma antigüedad el de mayor a menor monto. Aplicar el monto restante de la transacción a los contratos, si se cubre más de uno facturar todos los que alcancen aunque no se cubra el último completo. Al aplicar el monto de la transacción a los contratos, se verifica el día del mes de la transacción contra el mes del contrato. Si el mes/año de la transacción es el mismo del contrato, se compara el día límite configurado para usar montos con descuento. Si el mes/año de la transacción es anterior al del contrato se utiliza el monto descontado. Si aplica a descuento por la fecha límite, pero no cubre el total de la factura, no se marca como descontado, se utiliza el precio normal. Generar una factura que incluya los contratos aplicados a la transacción. Por cada contrato se agregará a la misma factura el detalle configurado y cada contrato quedará marcado como facturado por la factura generada. La factura será por el monto total del contrato asociado aunque el monto de la transacción no lo cubra. Esto es porque cada contrato se factura una vez y luego quedará la factura con un saldo por cobrar. Asociar la factura generada a la transacción por el monto elegido. Implementación Los contratos de proyectos se asocian con una venta al momento de generarla. Una venta puede estar asociada a varios contratos. Se puede quitar y poner la venta asociada a los contratos (para limpiar o hacer el proceso manualmente). Las vistas de qué contratos están facturados es en Proyectos->Contratos y en EditarVenta->Contratos Proyectos La fecha y número de factura asociada al contrato aparece en el estado de cuenta de proyecto, y en los reportes de Cuentas por Cobrar de Proyectos y de Cobros de Proyectos entre Fechas. Aunque un contrato esté asociado a una venta, es necesario llevar el estado de cuenta del proyecto a través de la transacción bancaria>proyectos y venta>proyectos; porque está separada la cuenta de facturado y cobrado. Los contratos que tienen venta asociada, también tienen un cheque de "descuento_aplicado" para que el sistema sepa qué monto se usó al facturar. Esto se pone automático al facturar desde la transacción bancaria, pero también se puede modificar directamente en el contrato desde Proyectos->Contratos. Si se quita la venta de un contrato, se quita también el cheque de "descontado" del contrato. El parámetro general de día límite para descuentos en proyectos se puede desactivar con 0. Al cobrar los contratos se generan las ventas necesarias y aparecen asociadas a la transacción. Si me arrepiento y quiero borrarlas para volverlo a hacer, tengo que borrar la asociación y luego las ventas. Para no tener que hacer esto manualmente, hay un botón para eliminar las ventas asociadas desde la misma pantalla. Parámetros Generales Nombre Uso requerir_detalle_en_contratos_proyectos Al facturar proyectos desde Asociados Transacción, lo impide si el proyecto elegido no tiene configurado detalles en sus contratos Default: false dia_limite_descuentos_proyectos El último día del mes antes del cual aplica el monto descontado de contratos de proyectos, puede ser: Sin descuentos -> 0 Último día del mes -> 30 Día específico -> 1-29 Estas restricciones están implementadas con el check constraint dia_limite_descuentos_proyectos en la misma tabla Default: 0 serie_proyectos Serie a utilizar al generar facturas desde cobrar_contratos_proyectos Default: 0 no_facturar_cobro_parcial_proyectos No generar factura si el monto por aplicar no cubre el monto del contrato. Si está desactivado: genera la factura por el monto total del contrato y la asocia a la transacción bancaria por el monto aplicado. Si está activo: no genera la factura, cancela la operación y da un mensaje. Permisos id Nombre Descripción Tipo Aplicar descuento a contrato Aplicar/Quitar descuento a contrato de proyectos Proyectos Contratos proyectos Agregar, editar, eliminar contratos de proyectos Proyectos Presupuestos proyectos Agregar, editar, eliminar presupuestos de proyectos Proyectos Editar proyectos Agregar, editar, eliminar fichas de proyectos Proyectos Base de datos Tipo Nombre Uso Tabla contratos Lista de contratos de un proyecto, con monto y fecha de cobro Tabla contratos_detalle Será el detalle de la venta (lineas_ventas)  al facturar un contrato Tabla contratos_impresion Será la impresión del detalle de la venta (lineas_ventas_impresion) al facturar un contrato Función actualizar_orden_contratos_impresion Ordenar los contratos_impresion Trigger trg_actualizar_orden_contratos_impresion Aplicar orden al insertar o eliminar contratos_impresion Función duplicar_contrato_proyectos Duplicar un contrato con todo y detalle e impresión, incrementando fecha, número y descripción. Error Q3003 Error de facturación y cobro de contratos de proyectos .NET Carpeta Archivo Descripción gen/Proyectos Contrato.vb Acceso a la tabla contratos gen/Proyectos ContratoDetalle.vb Acceso a la tabla contratos_detalle gen/Proyectos ContratoImpresion.vb Acceso a la tabla contratos_impresion src/Proyectos Contrato.vb Métodos auxiliares de Contrato Gui/Proyectos EditarContratos.vb Editar contratos de un proyecto