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:
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 |