Пример #1
0
 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();
 }
Пример #3
0
 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) . ";");
 }
Пример #4
0
 /**
  * 
  * @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();
     }
 }
Пример #5
0
 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.');
 }
Пример #6
0
 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();
         }
     }
 }
Пример #7
0
 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.');
     }
 }