public function __construct(&$db) { $this->db = $db; $recibo_factura = new recibo_factura(); /// comprobamos los recibos de proveedores $recibo_prov = new recibo_proveedor(); $recibo_prov->cron_job(); /// alternamos distintas consultas $opcion = mt_rand(0, 2); switch ($opcion) { case 0: $sql = "SELECT * FROM facturasprov WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM recibosprov)"; break; case 1: $sql = "SELECT * FROM facturasprov WHERE NOT pagada ORDER BY fecha ASC"; break; default: $sql = "SELECT * FROM facturasprov WHERE NOT pagada ORDER BY fecha DESC"; break; } $data = $this->db->select_limit($sql, 500, 0); if ($data) { foreach ($data as $d) { $factura = new factura_proveedor($d); $recibo_factura->sync_factura_prov($factura); echo '.'; } } /// comprobamos los recibos de clientes $recibo_cli = new recibo_cliente(); $recibo_cli->cron_job(); switch ($opcion) { case 0: $sql = "SELECT * FROM facturascli WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM reciboscli)"; break; case 1: $sql = "SELECT * FROM facturascli WHERE NOT pagada ORDER BY fecha ASC"; break; default: $sql = "SELECT * FROM facturascli WHERE NOT pagada ORDER BY fecha DESC"; break; } $data = $this->db->select_limit($sql, 500, 0); if ($data) { foreach ($data as $d) { $factura = new factura_cliente($d); $recibo_factura->sync_factura_cli($factura); echo '.'; } } /// ¿Errores? foreach ($recibo_factura->errors as $err) { echo $err . "\n"; } }
public function imprimir_ordenes_indiv($idorden) { $orden_prov = new orden_prov(); $orden = $orden_prov->get($idorden); $recibo_prov = new recibo_proveedor(); $recibo = $recibo_prov->get_por_idorden($idorden); $valor = new valores(); $valores = $valor->get_por_idorden($idorden); $factura_prov = new factura_proveedor(); $pdf_doc = new fs_pdf(); $cant_lineas_orden = count($orden); $lineas_total = 0; $cant_lineas = 25; $linea_actual = 0; $pagina = 1; $total_facturado = 0; $total_valor = 0; ///// Primer encabezado $pdf_doc->pdf->ezText("Página " . $pagina, 9, array('justification' => 'right')); $pdf_doc->pdf->ezText("<b>" . $this->empresa->nombre . "</b>", 10, array('justification' => 'left')); $pdf_doc->pdf->ezText("Fecha: " . $orden->fecha . " ", 9, array('justification' => 'right')); $pdf_doc->pdf->ezText("Orden de Pago Nº: " . $orden->idorden . " ", 12, array('justification' => 'right')); $pdf_doc->pdf->ezText($this->empresa->direccion, 10, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText("<b>Órdenes de pago</b>", 16, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText("<b>Proveedor: " . $orden->provorden . "</b>", 10, array('justification' => 'left')); $pdf_doc->pdf->ezText("<b> Concepto: " . $orden->conceptoorden . "</b>", 10, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText("<b>Facturas</b>", 12, array('justification' => 'left')); $pdf_doc->new_table(); $pdf_doc->add_table_header(array('fecha' => '<b>Fecha Fact.</b>', 'facdoc' => '<b>Documento</b>', 'factnum' => '<b>Número</b>', 'recargo' => '<b>Recargo</b>', 'factimp' => '<b>Importe Fact.</b>', 'total' => '<b>Total</b>')); $sub_t = 0; foreach ($recibo as $p) { $factura = $factura_prov->get_by_codigo($p->codigo); if (substr($p->factprov, 0, 1) == 'C' || substr($p->factprov, 0, 1) == 'Q') { $sub_t = $p->importe * -1; } else { $sub_t = $p->importe; } if (substr($p->factprov, 0, 1) == 'B') { $comp_doc = 'FACTURA B'; } if (substr($p->factprov, 0, 1) == 'F') { $comp_doc = 'FACTURA C'; } if (substr($p->factprov, 0, 1) == 'T') { $comp_doc = 'TICKET FACTURA'; } if (substr($p->factprov, 0, 1) == 'Q') { $comp_doc = 'TICKET CRÉDITO'; } if (substr($p->factprov, 0, 1) == 'C') { $comp_doc = 'NOTA DE CRÉDITO'; } if (substr($p->factprov, 0, 1) == 'D') { $comp_doc = 'NOTA DE DÉBITO'; } $numcompr = substr($p->factprov, 2); $pdf_doc->add_table_row(array('fecha' => $p->fecha, 'facdoc' => $comp_doc, 'factnum' => $numcompr, 'recargo' => $p->recargo, 'factimp' => $sub_t, 'total' => $sub_t + $p->recargo, 'valor' => $factura->observaciones, 'importe' => $sub_t)); $total_facturado += $sub_t + $p->recargo; } $pdf_doc->save_table(array('cols' => array('campo1' => array('justification' => 'left'), 'dato1' => array('justification' => 'left'), 'campo2' => array('justification' => 'left'), 'dato2' => array('justification' => 'left')), 'showLines' => 3, 'width' => 520, 'shaded' => 1)); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText("<b>Valores Entregados</b>", 12, array('justification' => 'left')); $pdf_doc->new_table(); $pdf_doc->add_table_header(array('fecha' => '<b>Fecha </b>', 'banco' => '<b>Banco</b>', 'numero' => '<b>Número</b>', 'importe' => '<b>Importe</b>')); foreach ($valores as $p) { $pdf_doc->add_table_row(array('fecha' => $p->fecha, 'banco' => $p->banco, 'numero' => $p->numero, 'importe' => $p->importe)); $total_valor += $p->importe; } $pdf_doc->save_table(array('cols' => array('campo1' => array('justification' => 'left'), 'dato1' => array('justification' => 'left'), 'campo2' => array('justification' => 'left'), 'dato2' => array('justification' => 'left')), 'showLines' => 3, 'width' => 520, 'shaded' => 1)); $pdf_doc->pdf->ezText("\n", 14); $pdf_doc->pdf->ezText("<b>Total Facturado: " . $total_facturado . "</b>", 11, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 6); $pdf_doc->pdf->ezText("<b>Total Entregado: " . $total_valor . "</b>", 11, array('justification' => 'left')); $pdf_doc->set_y(140); $pdf_doc->pdf->ezText('FIRMA : _________________________________________________ DNI: _________________________', 8, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText('ACLARACIÓN : _________________________________________________ ', 8, array('justification' => 'left')); $pdf_doc->pdf->ezText("\n", 10); $pdf_doc->pdf->ezText('DOMICILIO : ___________________________________________________ ', 8, array('justification' => 'left')); $pdf_doc->show(); }
public function delete() { /// desvinculamos la factura $fac = $this->get_factura(); if ($fac) { if ($fac->idasiento == $this->idasiento) { $fac->idasiento = NULL; $fac->save(); } } ///////// pone en "0" pagada en factura $fact_prov = new factura_proveedor(); $recibo = new recibo_proveedor(); $orden = new orden_prov(); $valor = new valores(); $data = $recibo->get_por_idasiento($this->idasiento); ///// pone en proceso la orden foreach ($data as $d) { // $fact_data = $fact_prov->get($d->idfactura); // $fact_data->pagada = 0; // $fact_data->save(); $idorden = $d->idorden; $orden->cambio_estado($idorden, 'Proceso'); /// pone idasiento en recibos $recibo->guardar_asiento_idorden($idorden, NULL); /// pone idasiento en valores $valor->guardar_asiento_idorden($idorden, NULL); } /////////////////////////////////////////// /////////elimina los recibos según el idasiento // if(!$recibo->delete_recibo_idasiento($this->idasiento)) $this->new_error_msg("Error - No se borraron los recibos"); //////// elimina la orden según el idasiento // $orden->cambio_estado($orden->idorden,'Proceso'); // if(!$orden->delete_orden_idasiento($this->idasiento)) $this->new_error_msg("Error - No se borraron las ordenes"); /// eliminamos las partidas una a una para forzar la actualización de las subcuentas asociadas foreach ($this->get_partidas() as $p) { $p->delete(); } return $this->db->exec("DELETE FROM " . $this->table_name . " WHERE idasiento = " . $this->var2str($this->idasiento) . ";"); }
/** * * @param factura_proveedor $factura */ public function sync_factura_prov(&$factura) { if ($factura) { $recibos = $this->recibo_proveedor->all_from_factura($factura->idfactura); if (count($recibos) == 0 and $factura->pagada) { /// no hacemos nada } else { if (count($recibos) == 0) { $formap = $this->forma_pago->get($factura->codpago); if ($formap) { $plazos = $this->plazo_pago->all_from($formap->codpago); if ($plazos) { $pendiente = $factura->total; foreach ($plazos as $i => $pla) { $recibo = new recibo_proveedor(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codproveedor = $factura->codproveedor; $recibo->nombreproveedor = $factura->nombre; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' +' . $pla->dias . 'days')); $recibo->idfactura = $factura->idfactura; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; if ($i + 1 == count($plazos)) { $recibo->importe = round($pendiente, FS_NF0); } else { $recibo->importe = round($factura->total * $pla->aplazado / 100, FS_NF0); $pendiente -= $recibo->importe; } $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbp->all_from_proveedor($recibo->codproveedor) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } else { $recibo = new recibo_proveedor(); $recibo->cifnif = $factura->cifnif; $recibo->coddivisa = $factura->coddivisa; $recibo->tasaconv = $factura->tasaconv; $recibo->codproveedor = $factura->codproveedor; $recibo->nombreproveedor = $factura->nombre; $recibo->estado = 'Emitido'; $recibo->fecha = $factura->fecha; $recibo->fechav = Date('d-m-Y', strtotime($factura->fecha . ' ' . $formap->vencimiento)); $recibo->idfactura = $factura->idfactura; $recibo->codpago = $factura->codpago; $recibo->codserie = $factura->codserie; $recibo->importe = $factura->total; $recibo->numero = $recibo->new_numero($recibo->idfactura); $recibo->codigo = $factura->codigo . '-' . sprintf('%02s', $recibo->numero); foreach ($this->cbp->all_from_proveedor($recibo->codproveedor) as $cuenta) { if (is_null($recibo->codcuenta) or $cuenta->principal) { $recibo->codcuenta = $cuenta->codcuenta; $recibo->iban = $cuenta->iban; $recibo->swift = $cuenta->swift; } } if ($recibo->save()) { $recibos[] = $recibo; } else { $this->new_error_msg('Error al generar el recibo.'); } } } } else { $pagado = 0; foreach ($recibos as $res) { if ($res->estado == 'Pagado') { $pagado += $res->importe; } } $factura->pagada = $pagado >= $factura->total; $factura->save(); } } return $recibos; } else { return array(); } }
private function pagar_facturas() { $num = 0; /// ¿Generamos el asiento de pago? $asientop = NULL; if ($this->empresa->contintegrada) { /// ¿Cuanto es el total? $coddivisa = NULL; $importe = 0; $tasaconv = 1; $rec0 = new recibo_proveedor(); foreach ($_POST['idfactura'] as $id) { $recibos = $rec0->all_from_factura($id); foreach ($recibos as $recibo) { if ($recibo->estado != 'Pagado') { $coddivisa = $recibo->coddivisa; $importe += $recibo->importe; $tasaconv = $recibo->tasaconv; } } } $asientop = $this->nuevo_asiento_pago($importe, $coddivisa, $tasaconv); } $fac0 = new factura_proveedor(); foreach ($_POST['idfactura'] as $id) { $error = FALSE; $recibos = $rec0->all_from_factura($id); foreach ($recibos as $recibo) { if ($recibo->estado != 'Pagado') { $pago = new pago_recibo_proveedor(); $pago->idrecibo = $recibo->idrecibo; if ($asientop) { $pago->idasiento = $asientop->idasiento; } if ($pago->save()) { $recibo->estado = 'Pagado'; if (!$recibo->save()) { $error = TRUE; } } } } if (!$error) { /// marcamos la factura como pagada $factura = $fac0->get($id); if ($factura) { $factura->pagada = TRUE; if ($factura->save()) { $num++; } } } } $this->new_message($num . ' facturas marcadas como pagadas, estas son las siguientes.'); }
private function cron_job() { $recibo = new recibo_proveedor(); $recibo->cron_job(); $sql = "SELECT * FROM facturasprov WHERE NOT pagada AND idfactura NOT IN (SELECT idfactura FROM recibosprov)"; $data = $this->db->select_limit($sql, FS_ITEM_LIMIT, 0); if ($data) { foreach ($data as $d) { $this->factura = new factura_proveedor($d); $this->sync_factura(); } } }
protected function private_core() { /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); $recibo = new recibo_proveedor(); $this->recibo = FALSE; if (isset($_REQUEST['id'])) { $this->recibo = $recibo->get($_REQUEST['id']); } if ($this->recibo) { if (isset($_POST['fechav'])) { $this->recibo->importe = floatval($_POST['importe']); $this->recibo->fecha = $_POST['emitido']; $this->recibo->fechav = $_POST['fechav']; $this->recibo->iban = $_POST['iban']; $this->recibo->swift = $_POST['swift']; if ($this->recibo->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Error al guardar los datos.'); } } $this->page->title = 'Recibo ' . $this->recibo->codigo; $fact = new factura_proveedor(); $this->factura = $fact->get($this->recibo->idfactura); $this->check_recibo(); $this->get_subcuentas(); $pago = new pago_recibo_proveedor(); if (isset($_POST['nuevopago'])) { $pago->idrecibo = $this->recibo->idrecibo; $pago->fecha = $_POST['fecha']; $pago->tipo = $_POST['tipo']; foreach ($this->subcuentas_pago as $sc) { if ($sc->codsubcuenta == $_POST['codsubcuenta']) { $pago->idsubcuenta = $sc->idsubcuenta; $pago->codsubcuenta = $sc->codsubcuenta; } } if ($pago->tipo == 'Pago') { if ($this->empresa->contintegrada and isset($_POST['generarasiento'])) { $pago->idasiento = $this->nuevo_asiento_pago($pago, $this->ejercicio); } $this->recibo->estado = 'Pagado'; $this->recibo->fechap = $_POST['fecha']; } else { if ($this->empresa->contintegrada and isset($_POST['generarasiento'])) { $pago->idasiento = $this->nuevo_asiento_devolucion($pago, $this->ejercicio); } $this->recibo->estado = 'Devuelto'; } if ($pago->save()) { $this->new_message('Pago guardado correctamente.'); $this->recibo->save(); } else { $this->new_error_msg('Error al guardar los pagos.'); } } else { if (isset($_GET['deletep'])) { foreach ($pago->all_from_recibo($this->recibo->idrecibo) as $pg) { if ($pg->idpagodevol == intval($_GET['deletep'])) { if ($pg->delete()) { $this->new_message($pg->tipo . ' eliminado correctamente'); $this->recibo->estado = 'Emitido'; $this->recibo->save(); } else { $this->new_error_msg('Error al eliminar el ' . $pg->tipo); } break; } } } } $this->pagos = $pago->all_from_recibo($this->recibo->idrecibo); $this->recibos = $this->recibo->all_from_factura($this->recibo->idfactura); $this->sync_factura(); } else { $this->new_error_msg('Recibo no encontrado.'); } }