/*!
 * \fn VCuentaCorriente::listadoDeudor()
 * Imprime el listado de cuentas corrientes deudoras
 */
void VCuentaCorriente::listadoDeudor()
{
    EReporte *rep = new EReporte( 0 );
    rep->especial( "ListadoCtaCteSaldo", ParameterList() );
    rep->hacer();
    delete rep;
}
Exemple #2
0
/*!
 * \brief FormRecibo::imprimir
 * Reimprime el recibo actual
 */
void FormRecibo::imprimir() {
    if( _id_actual > 0 ) {
        EReporte *rep = new EReporte( 0 );
        rep->recibo();
        ParameterList lista;
        lista.append( "id_recibo", _id_actual );
        rep->hacer( lista );
        delete rep;
    }
}
void FormFacturacionEmitida::imprimirListadoGeneral()
{
    // Busco el id que está del servicio
    EReporte *rep = new EReporte( 0 );
    ParameterList lista;
    lista.append( "id_servicio", CBServicio->idActual() );
    if( ERegistroPlugins::getInstancia()->existePluginExterno( "hicomp" ) ) {
        rep->especial( "ListaDeudoresServicioHC", lista );
    } else {
        rep->especial( "ListaDeudoresServicio", lista );
    }
    rep->hacer();
    delete rep;
}
/*!
    \fn FormResumenCtaCte::imprimir()
 */
void FormResumenCtaCte::imprimir()
{
    if( modeloItem->rowCount() <= 0 ) {
        QMessageBox::warning( this, "Error", "No hay ningun movimiento para la cuenta corriente. No se imprimira nada" );
        return;
    }
    // Busco la cuenta?
    ParameterList lista;
    lista.append( Parameter( "ctacte", CBClienteCtaCte->itemData( CBClienteCtaCte->currentIndex(), Qt::UserRole ).toString() ) );
    lista.append( Parameter( "filtro", this->_filtro ) );
    EReporte *rep = new EReporte( 0 );
    rep->especial( "ResumenCtaCte", lista );
    if( ! rep->hacer() ) {
        QMessageBox::warning( this, "Error", "No se pudo imprimir el resumen de cuenta corriente" );
    }
    delete rep;
    rep = 0;
}
/*!
  \fn FormAgregarRecibo::guardar()
 */
void FormAgregarRecibo::guardar()
{
    // Si fue llamado sin modelo adyacente
    if( this->_modelo ) {
        this->setearModelo( 0 );
    }
    // Verificaciónes iniciales
    if( this->CBCliente->currentIndex() == -1 ) {
        QMessageBox::warning( this, "Faltan datos", "Por favor verifique que un cliente este elegido" );
        return;
    }
    if( this->TETexto->toPlainText().isEmpty() ) {
        QMessageBox::warning( this, "Faltan datos", "Por favor verifique que el texto del recibo no este vacio" );
        return;
    }
    if( (!this->RBContado->isChecked()) && (!this->RBotro->isChecked()) && (!this->RBLuego->isChecked()) ) {
        QMessageBox::warning( this, "Faltan datos", "Por favor verifique que haya elegido una forma de pago." );
        return;
    }
    if( this->dSBPagado->value() <= 0.0 ) {
        QMessageBox::warning( this, "Faltan datos", "Por favor verifique que haya ingresado una cantidad a pagar" );
        return;
    }
    // busco la fecha de la ultima factura y verifico que facturemos con fecha igual o mayor
    QDate fecha_ultima_factura = this->_modelo->buscarFechaUltimoRecibo();
    if( ( fecha_ultima_factura.isValid() ) && ( this->DEFecha->date() < fecha_ultima_factura ) ) {
        QMessageBox::warning( this, "Faltan datos", QString( "Por favor verifique que haya ingresado una fecha mayor o igual a %1" ).arg( fecha_ultima_factura.toString() ) );
        return;
    }
    int id_cliente = this->CBCliente->model()->data( this->CBCliente->model()->index( this->CBCliente->currentIndex(), 0 ), Qt::EditRole ).toInt();
    QDate fecha = this->DEFecha->date();
    QString contenido = this->TETexto->toPlainText();
    double total = this->dSBPagado->value();
    bool pagado = false;
    bool contado = false;
    if( this->RBContado->isChecked() ) {
        pagado = true;
        contado = true;
    } else if( this->RBotro->isChecked() ) {
        pagado = true;
    } // Si esta como luego, pongo los dos parametros como estan false, false
    // Genero la transacción
    QSqlDatabase::database().transaction();
    this->_modelo->setEditStrategy( QSqlTableModel::OnManualSubmit );
    int num_recibo = this->_modelo->agregarRecibo( id_cliente, fecha, contenido, total, pagado, contado );
    if( num_recibo == -1 ) {
        this->_modelo->revertAll();
        QSqlDatabase::database().rollback();
        QMessageBox::warning( this, "Error", QString( "Ocurrio un error al intentar guardar el recibo" ) );
        return;
    }
    this->_modelo->submitAll();
    QSqlDatabase::database().commit();
    // Imprimir el recibo
    QMessageBox::information( this, "Correcto", QString::fromUtf8( "El recibo nº %1 se guardo correctamente y se ha enviado a imprimir automaticamente" ).arg( this->_modelo->buscarNumeroComprobantePorId( num_recibo ).aCadena() ) );
    /// Imprimo el recibo
    ParameterList lista;
    lista.append( "id_recibo", num_recibo );
    EReporte *rep = new EReporte( this );
    rep->recibo();
    if( !rep->hacer( lista ) ) {
        rep->mostrarError( this );
        QMessageBox::information( this, "Error", QString( "No se pudo encontrar la definicion del informe. Contactese con el administrador." ) );
    }
    this->close();
    this->_modelo = 0;
    return;
}
/*!
 * @fn MClientesServicios::darDeBaja( int id_cliente, int id_servicio, QString razon )
 * Da de baja al cliente seleccionado segun la razon espcificada
 * Si no se especifica una razon, se coloca una predeterminada.
 * La fecha de baja es cuando se realiza la operación.
 * Si la baja se realizo correctamente, se imprime el comprobante de baja. El no imprimirlo, no modifica el resultado.
 * \param id_cliente Identificador del cliente.
 * \param id_servicio Identificador del servicio.
 * \param razon Texto de por que da de baja el servicio.
 * \return Verdadero se pudo realizar la baja.
 */
bool MClientesServicios::darDeBaja( int id_cliente, int id_servicio, QString razon ) {
    // Verificar existencia de la asociacion
    QSqlQuery cola;
    if( !cola.exec( QString( "SELECT COUNT(id_cliente) FROM servicios_clientes WHERE id_cliente = %1 AND id_servicio = %2" ).arg( id_cliente ).arg( id_servicio ) ) ) {
        qDebug( "Error al ejecutar la cola de obtencion de lciente servicio." );
        qDebug( cola.lastError().text().toLocal8Bit() );
        qDebug( cola.lastQuery().toLocal8Bit() );
    } else {
        if( !cola.next() ) {
            qDebug( "Error al hacer next en la cola de obtencion del cliente servicio" );
            qDebug( cola.lastError().text().toLocal8Bit() );
            qDebug( cola.lastQuery().toLocal8Bit() );
            return false;
        } else {
            if( cola.record().value(0).toInt() <= 0 ) {
                qWarning( "El cliente seleccionado no esta adherido al servicio especificado" );
                qDebug( cola.lastError().text().toLocal8Bit() );
                qDebug( cola.lastQuery().toLocal8Bit() );
                return false;
            }
        }
    } // Existe
    // verificar deudas existentes respecto a servicios
    if( MCobroServicioClientePeriodo::esDeudor( id_cliente, id_servicio ) ) {
        QMessageBox::warning( 0, "Saldo incompleto", "El cliente todavía tiene cuotas pendientes de pago. <br/> No se podrá realizar la baja hasta que se paguen las deudas pendientes" );
        return false;
    }
    // verificar fecha respecto al periodo del servicio y facturar lo que falte ? ( ya esta echo por el punto anterior )
    // Verificar la razon
    if( razon.isEmpty() ) {
        qDebug( "Razon de baja de adhesion desconocida. Colocando la default." );
        razon = "Desconocida - No Especificada.";
    }
    // Ingresar baja
    QSqlQuery cola2;
    if( !cola2.prepare(
         QString( "UPDATE servicios_clientes SET fecha_baja = :fecha, razon = :razon WHERE id_cliente = %1 AND id_servicio = %2" )
                .arg( id_cliente ).arg( id_servicio ) ) ) {
        qDebug( "Error al preparar la cola" );
        qDebug( cola2.lastError().text().toLocal8Bit() );
        qDebug( cola2.lastQuery().toLocal8Bit() );
        return false;
    }
    cola2.bindValue( ":fecha" , QDate::currentDate() );
    cola2.bindValue( ":razon", razon );
    /*cola2.bindValue( ":id_cliente",  id_cliente );
    cola2.bindValue( ":id_servicio", id_servicio );*/
    if( !cola2.exec() ) {
        qDebug( "Error al ejecutar la cola de insercion de fecha de baja y razon en la tabla de servicios_clientes" );
        qDebug( cola2.lastError().text().toLocal8Bit() );
        qDebug( cola2.lastQuery().toLocal8Bit() );
        return false;
    } else {
        qDebug( cola2.lastError().text().toLocal8Bit() );
        qDebug( cola2.lastQuery().toLocal8Bit() );
    }
    // Imprimir comprobante de baja
    EReporte *rep = new EReporte( 0 );
    ParameterList parametros;
    parametros.append( Parameter( "id_cliente", id_cliente ) );
    parametros.append( Parameter( "id_servicio", id_servicio ) );
    parametros.append( Parameter( "razon", razon ) );
    parametros.append( Parameter( "fecha", QDate::currentDate() ) );
    rep->especial( "baja-servicio", parametros );
    rep->hacer();
    delete rep;
    return true;
}