Example #1
0
 public function new_subcuenta($suma_codigo)
 {
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($this->codejercicio);
     if ($eje0) {
         $codsubcuenta = floatval(sprintf('%-0' . $eje0->longsubcuenta . 's', $this->codcuenta)) + $suma_codigo;
         $subcuenta = new subcuenta();
         $subc0 = $subcuenta->get_by_codigo($codsubcuenta, $this->codejercicio);
         if ($subc0) {
             return $subc0;
         } else {
             $subc0 = new subcuenta();
             $subc0->codcuenta = $this->codcuenta;
             $subc0->idcuenta = $this->idcuenta;
             $subc0->codejercicio = $this->codejercicio;
             $subc0->codsubcuenta = $codsubcuenta;
             return $subc0;
         }
     } else {
         return FALSE;
     }
 }
 private function generar_factura($albaranes)
 {
     $continuar = TRUE;
     $factura = new factura_cliente();
     $factura->automatica = TRUE;
     $factura->codalmacen = $albaranes[0]->codalmacen;
     $factura->coddivisa = $albaranes[0]->coddivisa;
     $factura->tasaconv = $albaranes[0]->tasaconv;
     $factura->codejercicio = $albaranes[0]->codejercicio;
     $factura->codpago = $albaranes[0]->codpago;
     $factura->codserie = $albaranes[0]->codserie;
     $factura->editable = FALSE;
     $factura->irpf = $albaranes[0]->irpf;
     $factura->numero2 = $albaranes[0]->numero2;
     $factura->observaciones = $albaranes[0]->observaciones;
     $factura->recfinanciero = $albaranes[0]->recfinanciero;
     /// comprobamos la forma de pago para saber si hay que marcar la factura como pagada
     $formapago = $this->forma_pago->get($factura->codpago);
     if ($formapago) {
         if ($formapago->genrecibos == 'Pagados') {
             $factura->pagada = TRUE;
         }
     }
     /// obtenemos los datos actuales del cliente, por si ha habido cambios
     $cliente = $this->cliente->get($albaranes[0]->codcliente);
     if ($cliente) {
         foreach ($cliente->get_direcciones() as $dir) {
             if ($dir->domfacturacion) {
                 $factura->apartado = $dir->apartado;
                 $factura->cifnif = $cliente->cifnif;
                 $factura->ciudad = $dir->ciudad;
                 $factura->codcliente = $cliente->codcliente;
                 $factura->coddir = $dir->id;
                 $factura->codpais = $dir->codpais;
                 $factura->codpostal = $dir->codpostal;
                 $factura->direccion = $dir->direccion;
                 $factura->nombrecliente = $cliente->nombrecomercial;
                 $factura->provincia = $dir->provincia;
                 break;
             }
         }
     }
     /// calculamos neto e iva
     foreach ($albaranes as $alb) {
         foreach ($alb->get_lineas() as $l) {
             $factura->neto += $l->pvptotal;
             $factura->totaliva += $l->pvptotal * $l->iva / 100;
             $factura->totalirpf += $l->pvptotal * $l->irpf / 100;
             $factura->totalrecargo += $l->pvptotal * $l->recargo / 100;
         }
     }
     /// redondeamos
     $factura->neto = round($factura->neto, FS_NF0);
     $factura->totaliva = round($factura->totaliva, FS_NF0);
     $factura->totalirpf = round($factura->totalirpf, FS_NF0);
     $factura->totalrecargo = round($factura->totalrecargo, FS_NF0);
     $factura->total = $factura->neto + $factura->totaliva - $factura->totalirpf + $factura->totalrecargo;
     /// asignamos la mejor fecha posible, pero dentro del ejercicio
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($factura->codejercicio);
     $factura->fecha = $eje0->get_best_fecha($factura->fecha);
     $regularizacion = new regularizacion_iva();
     if (!$eje0->abierto()) {
         $this->new_error_msg('El ejercicio ' . $eje0->codejercicio . ' está cerrado.');
     } else {
         if ($regularizacion->get_fecha_inside($factura->fecha)) {
             /*
              * comprobamos que la fecha de la factura no esté dentro de un periodo de
              * IVA regularizado.
              */
             $this->new_error_msg('El IVA de ese periodo ya ha sido regularizado. No se pueden añadir más facturas en esa fecha.');
         } else {
             if ($factura->save()) {
                 foreach ($albaranes as $alb) {
                     foreach ($alb->get_lineas() as $l) {
                         $n = new linea_factura_cliente();
                         $n->idalbaran = $alb->idalbaran;
                         $n->idfactura = $factura->idfactura;
                         $n->cantidad = $l->cantidad;
                         $n->codimpuesto = $l->codimpuesto;
                         $n->descripcion = $l->descripcion;
                         $n->dtolineal = $l->dtolineal;
                         $n->dtopor = $l->dtopor;
                         $n->irpf = $l->irpf;
                         $n->iva = $l->iva;
                         $n->pvpsindto = $l->pvpsindto;
                         $n->pvptotal = $l->pvptotal;
                         $n->pvpunitario = $l->pvpunitario;
                         $n->recargo = $l->recargo;
                         $n->referencia = $l->referencia;
                         if (!$n->save()) {
                             $continuar = FALSE;
                             $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! ");
                             break;
                         }
                     }
                 }
                 if ($continuar) {
                     foreach ($albaranes as $alb) {
                         $alb->idfactura = $factura->idfactura;
                         $alb->ptefactura = FALSE;
                         if (!$alb->save()) {
                             $this->new_error_msg("¡Imposible vincular el " . FS_ALBARAN . " con la nueva factura!");
                             $continuar = FALSE;
                             break;
                         }
                     }
                     if ($continuar) {
                         $this->generar_asiento($factura);
                     } else {
                         if ($factura->delete()) {
                             $this->new_error_msg("La factura se ha borrado.");
                         } else {
                             $this->new_error_msg("¡Imposible borrar la factura!");
                         }
                     }
                 } else {
                     if ($factura->delete()) {
                         $this->new_error_msg("La factura se ha borrado.");
                     } else {
                         $this->new_error_msg("¡Imposible borrar la factura!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Imposible guardar la factura!");
             }
         }
     }
 }
Example #3
0
 public function full_test($duplicados = TRUE)
 {
     $status = TRUE;
     /*
      * Comprobamos que el asiento no esté vacío o descuadrado.
      * También comprobamos que las subcuentas pertenezcan al mismo ejercicio.
      */
     $debe = 0;
     $haber = 0;
     $partidas = $this->get_partidas();
     if ($partidas) {
         foreach ($partidas as $p) {
             $debe += $p->debe;
             $haber += $p->haber;
             $sc = $p->get_subcuenta();
             if ($sc) {
                 if ($sc->codejercicio != $this->codejercicio) {
                     $this->new_error_msg('La subcuenta ' . $sc->codsubcuenta . ' pertenece a otro ejercicio.');
                     $status = FALSE;
                 }
             } else {
                 $this->new_error_msg('Subcuenta ' . $p->codsubcuenta . ' no encontrada.');
                 $status = FALSE;
             }
         }
     }
     if (!$this->floatcmp($debe, $haber, FS_NF0, TRUE)) {
         $this->new_error_msg("Asiento descuadrado. Descuadre: " . round($debe - $haber, FS_NF0 + 1));
         $status = FALSE;
     }
     /// comprobamos que la fecha sea correcta
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($this->codejercicio);
     if ($eje0) {
         if (strtotime($this->fecha) < strtotime($eje0->fechainicio) or strtotime($this->fecha) > strtotime($eje0->fechafin)) {
             $this->new_error_msg("La fecha de este asiento está fuera del rango del <a target='_blank' href='" . $eje0->url() . "'>ejercicio</a>.");
             $status = FALSE;
         }
     }
     if ($status and $duplicados) {
         /// comprobamos si es un duplicado
         $asientos = $this->db->select("SELECT * FROM " . $this->table_name . " WHERE fecha = " . $this->var2str($this->fecha) . "\n            AND concepto = " . $this->var2str($this->concepto) . " AND importe = " . $this->var2str($this->importe) . "\n            AND idasiento != " . $this->var2str($this->idasiento) . ";");
         if ($asientos) {
             foreach ($asientos as $as) {
                 /// comprobamos las líneas
                 if (strtolower(FS_DB_TYPE) == 'mysql') {
                     $aux = $this->db->select("SELECT codsubcuenta,debe,haber,codcontrapartida,concepto\n                     FROM co_partidas WHERE idasiento = " . $this->var2str($this->idasiento) . "\n                     AND NOT EXISTS(SELECT codsubcuenta,debe,haber,codcontrapartida,concepto FROM co_partidas\n                     WHERE idasiento = " . $this->var2str($as['idasiento']) . ");");
                 } else {
                     $aux = $this->db->select("SELECT codsubcuenta,debe,haber,codcontrapartida,concepto\n                     FROM co_partidas WHERE idasiento = " . $this->var2str($this->idasiento) . "\n                     EXCEPT SELECT codsubcuenta,debe,haber,codcontrapartida,concepto FROM co_partidas\n                     WHERE idasiento = " . $this->var2str($as['idasiento']) . ";");
                 }
                 if (!$aux) {
                     $this->new_error_msg("Este asiento es un posible duplicado de\n                     <a href='index.php?page=contabilidad_asiento&id=" . $as['idasiento'] . "'>este otro</a>.\n                     Si no lo es, para evitar este mensaje, simplemente modifica el concepto.");
                     $status = FALSE;
                 }
             }
         }
     }
     return $status;
 }
 public function full_test($duplicados = TRUE)
 {
     $status = TRUE;
     /// comprobamos la fecha de la factura
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($this->codejercicio);
     if ($eje0) {
         if (strtotime($this->fecha) < strtotime($eje0->fechainicio) or strtotime($this->fecha) > strtotime($eje0->fechafin)) {
             $status = FALSE;
             $this->new_error_msg("La fecha de esta factura está fuera del rango del <a target='_blank' href='" . $eje0->url() . "'>ejercicio</a>.");
         }
     }
     /// comprobamos las líneas
     $neto = 0;
     $iva = 0;
     $irpf = 0;
     $recargo = 0;
     foreach ($this->get_lineas() as $l) {
         if (!$l->test()) {
             $status = FALSE;
         }
         $neto += $l->pvptotal;
         $iva += $l->pvptotal * $l->iva / 100;
         $irpf += $l->pvptotal * $l->irpf / 100;
         $recargo += $l->pvptotal * $l->recargo / 100;
     }
     $neto = round($neto, FS_NF0);
     $iva = round($iva, FS_NF0);
     $irpf = round($irpf, FS_NF0);
     $recargo = round($recargo, FS_NF0);
     $total = $neto + $iva - $irpf + $recargo;
     if (!$this->floatcmp($this->neto, $neto, FS_NF0, TRUE)) {
         $this->new_error_msg("Valor neto de la factura incorrecto. Valor correcto: " . $neto);
         $status = FALSE;
     } else {
         if (!$this->floatcmp($this->totaliva, $iva, FS_NF0, TRUE)) {
             $this->new_error_msg("Valor totaliva de la factura incorrecto. Valor correcto: " . $iva);
             $status = FALSE;
         } else {
             if (!$this->floatcmp($this->totalirpf, $irpf, FS_NF0, TRUE)) {
                 $this->new_error_msg("Valor totalirpf de la factura incorrecto. Valor correcto: " . $irpf);
                 $status = FALSE;
             } else {
                 if (!$this->floatcmp($this->totalrecargo, $recargo, FS_NF0, TRUE)) {
                     $this->new_error_msg("Valor totalrecargo de la factura incorrecto. Valor correcto: " . $recargo);
                     $status = FALSE;
                 } else {
                     if (!$this->floatcmp($this->total, $total, FS_NF0, TRUE)) {
                         $this->new_error_msg("Valor total de la factura incorrecto. Valor correcto: " . $total);
                         $status = FALSE;
                     } else {
                         if (!$this->floatcmp($this->totaleuros, $this->total * $this->tasaconv, FS_NF0, TRUE)) {
                             $this->new_error_msg("Valor totaleuros de la factura incorrecto.\n            Valor correcto: " . round($this->total * $this->tasaconv, FS_NF0));
                             $status = FALSE;
                         }
                     }
                 }
             }
         }
     }
     /// comprobamos las líneas de IVA
     $this->get_lineas_iva();
     $linea_iva = new linea_iva_factura_proveedor();
     if (!$linea_iva->factura_test($this->idfactura, $neto, $iva, $recargo)) {
         $status = FALSE;
     }
     /// comprobamos el asiento
     if (isset($this->idasiento)) {
         $asiento = $this->get_asiento();
         if ($asiento) {
             if ($asiento->tipodocumento != 'Factura de proveedor' or $asiento->documento != $this->codigo) {
                 $this->new_error_msg("Esta factura apunta a un <a href='" . $this->asiento_url() . "'>asiento incorrecto</a>.");
                 $status = FALSE;
             }
         } else {
             $this->new_error_msg("Asiento no encontrado.");
             $status = FALSE;
         }
     }
     if ($status and $duplicados) {
         /// comprobamos si es un duplicado
         $facturas = $this->db->select("SELECT * FROM " . $this->table_name . " WHERE fecha = " . $this->var2str($this->fecha) . "\n            AND codproveedor = " . $this->var2str($this->codproveedor) . " AND total = " . $this->var2str($this->total) . "\n            AND observaciones = " . $this->var2str($this->observaciones) . " AND idfactura != " . $this->var2str($this->idfactura) . ";");
         if ($facturas) {
             foreach ($facturas as $fac) {
                 /// comprobamos las líneas
                 $aux = $this->db->select("SELECT referencia FROM lineasfacturasprov WHERE\n                  idfactura = " . $this->var2str($this->idfactura) . "\n                  AND referencia NOT IN (SELECT referencia FROM lineasfacturasprov\n                  WHERE idfactura = " . $this->var2str($fac['idfactura']) . ");");
                 if (!$aux) {
                     $this->new_error_msg("Esta factura es un posible duplicado de\n                     <a href='index.php?page=compras_factura&id=" . $fac['idfactura'] . "'>esta otra</a>.\n                     Si no lo es, para evitar este mensaje, simplemente modifica las observaciones.");
                     $status = FALSE;
                 }
             }
         }
     }
     return $status;
 }
 protected function private_core()
 {
     /// cargamos las putas secuencias para que se actualicen.
     /// Abanq/Eneboo, yo te maldigooooo!!!!!!!!!!!!!!!!!!!!!!
     $sec0 = new secuencia_ejercicio();
     $sec1 = new secuencia_contabilidad();
     $sec2 = new secuencia();
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $this->ejercicio = FALSE;
     if (isset($_POST['codejercicio'])) {
         $eje0 = new ejercicio();
         $this->ejercicio = $eje0->get($_POST['codejercicio']);
         if ($this->ejercicio) {
             $this->ejercicio->nombre = $_POST['nombre'];
             $this->ejercicio->fechainicio = $_POST['fechainicio'];
             $this->ejercicio->fechafin = $_POST['fechafin'];
             $this->ejercicio->longsubcuenta = intval($_POST['longsubcuenta']);
             $this->ejercicio->estado = $_POST['estado'];
             if ($this->ejercicio->save()) {
                 $this->new_message('Datos guardados correctamente.');
             } else {
                 $this->new_error_msg('Imposible guardar los datos.');
             }
         }
     } else {
         if (isset($_GET['cod'])) {
             $eje0 = new ejercicio();
             $this->ejercicio = $eje0->get($_GET['cod']);
         }
     }
     if ($this->ejercicio) {
         if (isset($_GET['export'])) {
             $this->exportar_xml();
         } else {
             $this->page->title = $this->ejercicio->codejercicio . ' (' . $this->ejercicio->nombre . ')';
             if (isset($_GET['cerrar']) and isset($_GET['petid'])) {
                 if ($this->duplicated_petition($_GET['petid'])) {
                     $this->new_error_msg('Petición duplicada. Evita hacer doble clic sobre los botones.');
                 } else {
                     $this->cerrar_ejercicio();
                 }
             } else {
                 $this->ejercicio->full_test();
             }
             $asiento = new asiento();
             $this->asiento_apertura_url = FALSE;
             if ($this->ejercicio->idasientoapertura) {
                 $asiento_a = $asiento->get($this->ejercicio->idasientoapertura);
                 if ($asiento_a) {
                     $this->asiento_apertura_url = $asiento_a->url();
                 }
             }
             $this->asiento_cierre_url = FALSE;
             if ($this->ejercicio->idasientocierre) {
                 $asiento_c = $asiento->get($this->ejercicio->idasientocierre);
                 if ($asiento_c) {
                     $this->asiento_cierre_url = $asiento_c->url();
                 }
             }
             $this->asiento_pyg_url = FALSE;
             if ($this->ejercicio->idasientopyg) {
                 $asiento_pyg = $asiento->get($this->ejercicio->idasientopyg);
                 if ($asiento_pyg) {
                     $this->asiento_pyg_url = $asiento_pyg->url();
                 }
             }
             /// comprobamos el proceso de importación
             $this->importar_xml();
             $this->offset = 0;
             if (isset($_GET['offset'])) {
                 $this->offset = intval($_GET['offset']);
             }
             if (!isset($_GET['listar'])) {
                 $this->listar = 'cuentas';
             } else {
                 if ($_GET['listar'] == 'grupos') {
                     $this->listar = 'grupos';
                 } else {
                     if ($_GET['listar'] == 'epigrafes') {
                         $this->listar = 'epigrafes';
                     } else {
                         if ($_GET['listar'] == 'subcuentas') {
                             $this->listar = 'subcuentas';
                         } else {
                             $this->listar = 'cuentas';
                         }
                     }
                 }
             }
             switch ($this->listar) {
                 default:
                     $cuenta = new cuenta();
                     $this->listado = $cuenta->full_from_ejercicio($this->ejercicio->codejercicio);
                     break;
                 case 'grupos':
                     $ge = new grupo_epigrafes();
                     $this->listado = $ge->all_from_ejercicio($this->ejercicio->codejercicio);
                     break;
                 case 'epigrafes':
                     $epigrafe = new epigrafe();
                     $this->listado = $epigrafe->all_from_ejercicio($this->ejercicio->codejercicio);
                     break;
                 case 'subcuentas':
                     $subcuenta = new subcuenta();
                     $this->listado = $subcuenta->all_from_ejercicio($this->ejercicio->codejercicio);
                     break;
             }
         }
     } else {
         $this->new_error_msg('Ejercicio no encontrado.');
     }
 }
 protected function private_core()
 {
     $this->tipo = FALSE;
     $this->subcuenta = FALSE;
     $this->cuenta = new cuenta();
     $this->codejercicio = $this->default_items->codejercicio();
     if (isset($_POST['codejercicio'])) {
         $this->codejercicio = $_POST['codejercicio'];
     }
     /// comprobamos el ejercicio
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($this->codejercicio);
     if (!$eje0) {
         $eje0 = $ejercicio->get_by_fecha(date('d-m-Y'));
         if ($eje0) {
             $this->codejercicio = $eje0->codejercicio;
         }
     }
     if (isset($_POST['ejercicio']) and isset($_POST['query'])) {
         $this->new_search();
     } else {
         if (isset($_REQUEST['cli'])) {
             $this->tipo = 'cli';
             $cliente = new cliente();
             $this->cliente = $cliente->get($_REQUEST['cli']);
             if ($this->cliente) {
                 $subcuenta_cliente = new subcuenta_cliente();
                 if (isset($_GET['delete_sca'])) {
                     $aux_sca = $subcuenta_cliente->get2($_GET['delete_sca']);
                     if ($aux_sca) {
                         if ($aux_sca->delete()) {
                             $this->new_message('El cliente ya no está asocuado a esa subcuenta.');
                         } else {
                             $this->new_error_msg('Imposible quitar la subcuenta.');
                         }
                     } else {
                         $this->new_error_msg('Relación con la subcuenta no encontrada.');
                     }
                 } else {
                     if (isset($_GET['idsc'])) {
                         $this->subcuenta_a = $subcuenta_cliente->get($_GET['cli'], $_GET['idsc']);
                         if ($this->subcuenta_a) {
                             $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                             $this->codejercicio = $this->subcuenta_a->codejercicio;
                         }
                     } else {
                         if (isset($_POST['idsc'])) {
                             $this->subcuenta_a = $subcuenta_cliente->get($_POST['cli'], $_POST['idsc']);
                             if ($this->subcuenta_a) {
                                 $subc = new subcuenta();
                                 $subc0 = $subc->get($_POST['idsc2']);
                                 if ($subc0) {
                                     $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta;
                                     $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta;
                                     $this->subcuenta_a->codejercicio = $subc0->codejercicio;
                                     if ($this->subcuenta_a->save()) {
                                         $this->new_message('Datos guardados correctamente.');
                                     } else {
                                         $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                     }
                                     $this->subcuenta = $subc0;
                                 } else {
                                     $this->new_error_msg('Subcuenta no encontrada.');
                                     $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                 }
                             }
                         } else {
                             if (isset($_POST['idsc2'])) {
                                 $subc = new subcuenta();
                                 $subc0 = $subc->get($_POST['idsc2']);
                                 if ($subc0) {
                                     $subcuenta_cliente->codcliente = $this->cliente->codcliente;
                                     $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta;
                                     $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta;
                                     $subcuenta_cliente->codejercicio = $subc0->codejercicio;
                                     if ($subcuenta_cliente->save()) {
                                         $this->new_message('Datos guardados correctamente.');
                                     } else {
                                         $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                     }
                                     $this->subcuenta = $subc0;
                                 } else {
                                     $this->new_error_msg('Subcuenta no encontrada.');
                                 }
                             } else {
                                 if (isset($_POST['cuenta'])) {
                                     $cuenta0 = $this->cuenta->get($_POST['cuenta']);
                                     if ($cuenta0) {
                                         $subc0 = new subcuenta();
                                         $subc0->codcuenta = $cuenta0->codcuenta;
                                         $subc0->coddivisa = $this->default_items->coddivisa();
                                         $subc0->codejercicio = $cuenta0->codejercicio;
                                         $subc0->codsubcuenta = $_POST['codsubcuenta'];
                                         $subc0->descripcion = $this->cliente->nombre;
                                         $subc0->idcuenta = $cuenta0->idcuenta;
                                         if ($subc0->save()) {
                                             $subcuenta_cliente->codcliente = $this->cliente->codcliente;
                                             $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta;
                                             $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta;
                                             $subcuenta_cliente->codejercicio = $subc0->codejercicio;
                                             if ($subcuenta_cliente->save()) {
                                                 $this->new_message('Datos guardados correctamente.');
                                             } else {
                                                 $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                             }
                                             $this->subcuenta = $subc0;
                                         } else {
                                             $this->new_error_msg('Imposible crear la sucuenta.');
                                         }
                                     } else {
                                         $this->new_error_msg('Cuenta no encontrada.');
                                     }
                                 } else {
                                     foreach ($subcuenta_cliente->all_from_cliente($_REQUEST['cli']) as $sca) {
                                         if ($sca->codejercicio == $this->codejercicio) {
                                             $this->subcuenta_a = $sca;
                                             $this->subcuenta = $sca->get_subcuenta();
                                             break;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             if (isset($_REQUEST['pro'])) {
                 $this->tipo = 'pro';
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($_REQUEST['pro']);
                 if ($this->proveedor) {
                     $subcuenta_proveedor = new subcuenta_proveedor();
                     if (isset($_GET['delete_sca'])) {
                         $aux_sca = $subcuenta_proveedor->get2($_GET['delete_sca']);
                         if ($aux_sca) {
                             if ($aux_sca->delete()) {
                                 $this->new_message('El proveedor ya no está asocuado a esa subcuenta.');
                             } else {
                                 $this->new_error_msg('Imposible quitar la subcuenta.');
                             }
                         } else {
                             $this->new_error_msg('Relación con la subcuenta no encontrada.');
                         }
                     } else {
                         if (isset($_GET['idsc'])) {
                             $this->subcuenta_a = $subcuenta_proveedor->get($_GET['pro'], $_GET['idsc']);
                             if ($this->subcuenta_a) {
                                 $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                 $this->codejercicio = $this->subcuenta_a->codejercicio;
                             }
                         } else {
                             if (isset($_POST['idsc'])) {
                                 $this->subcuenta_a = $subcuenta_proveedor->get($_POST['pro'], $_POST['idsc']);
                                 if ($this->subcuenta_a) {
                                     $subc = new subcuenta();
                                     $subc0 = $subc->get($_POST['idsc2']);
                                     if ($subc0) {
                                         $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta;
                                         $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta;
                                         $this->subcuenta_a->codejercicio = $subc0->codejercicio;
                                         if ($this->subcuenta_a->save()) {
                                             $this->new_message('Datos guardados correctamente.');
                                         } else {
                                             $this->new_error_msg('Imposible asignar la subcuenta al proveedor.');
                                         }
                                         $this->subcuenta = $subc0;
                                     } else {
                                         $this->new_error_msg('Subcuenta no encontrada.');
                                         $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                     }
                                 }
                             } else {
                                 if (isset($_POST['idsc2'])) {
                                     $subc = new subcuenta();
                                     $subc0 = $subc->get($_POST['idsc2']);
                                     if ($subc0) {
                                         $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor;
                                         $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta;
                                         $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta;
                                         $subcuenta_proveedor->codejercicio = $subc0->codejercicio;
                                         if ($subcuenta_proveedor->save()) {
                                             $this->new_message('Datos guardados correctamente.');
                                         } else {
                                             $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                         }
                                         $this->subcuenta = $subc0;
                                     } else {
                                         $this->new_error_msg('Subcuenta no encontrada.');
                                     }
                                 } else {
                                     if (isset($_POST['cuenta'])) {
                                         $cuenta0 = $this->cuenta->get($_POST['cuenta']);
                                         if ($cuenta0) {
                                             $subc0 = new subcuenta();
                                             $subc0->codcuenta = $cuenta0->codcuenta;
                                             $subc0->coddivisa = $this->default_items->coddivisa();
                                             $subc0->codejercicio = $cuenta0->codejercicio;
                                             $subc0->codsubcuenta = $_POST['codsubcuenta'];
                                             $subc0->descripcion = $this->proveedor->nombre;
                                             $subc0->idcuenta = $cuenta0->idcuenta;
                                             if ($subc0->save()) {
                                                 $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor;
                                                 $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta;
                                                 $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta;
                                                 $subcuenta_proveedor->codejercicio = $subc0->codejercicio;
                                                 if ($subcuenta_proveedor->save()) {
                                                     $this->new_message('Datos guardados correctamente.');
                                                 } else {
                                                     $this->new_error_msg('Imposible asignar la subcuenta al proveedor.');
                                                 }
                                                 $this->subcuenta = $subc0;
                                             } else {
                                                 $this->new_error_msg('Imposible crear la sucuenta.');
                                             }
                                         } else {
                                             $this->new_error_msg('Cuenta no encontrada.');
                                         }
                                     } else {
                                         foreach ($subcuenta_proveedor->all_from_proveedor($_REQUEST['pro']) as $sca) {
                                             if ($sca->codejercicio == $this->codejercicio) {
                                                 $this->subcuenta_a = $sca;
                                                 $this->subcuenta = $sca->get_subcuenta();
                                                 break;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Example #7
0
 public function get_ejercicio()
 {
     $eje = new \ejercicio();
     return $eje->get($this->codejercicio);
 }
 /**
  * Genera el balance de situación.
  * @param type $codeje
  */
 public function generar_sit($codeje)
 {
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get($codeje);
     if ($eje0) {
         $pdf_doc = new fs_pdf();
         $pdf_doc->pdf->addInfo('Title', 'Balance de pérdidas y ganancias de ' . $this->empresa->nombre);
         $pdf_doc->pdf->addInfo('Subject', 'Balance de pérdidas y ganancias de ' . $this->empresa->nombre);
         $pdf_doc->pdf->addInfo('Author', $this->empresa->nombre);
         $pdf_doc->pdf->ezStartPageNumbers(580, 10, 10, 'left', '{PAGENUM} de {TOTALPAGENUM}');
         $this->situacion($pdf_doc, $eje0, FALSE);
         $pdf_doc->show();
     }
 }
 private function buscar_subcuenta()
 {
     /// desactivamos la plantilla HTML
     $this->template = FALSE;
     $subcuenta = new subcuenta();
     $eje0 = new ejercicio();
     $ejercicio = $eje0->get($_REQUEST['codejercicio']);
     $json = array();
     foreach ($subcuenta->search_by_ejercicio($ejercicio->codejercicio, $_REQUEST['buscar_subcuenta']) as $subc) {
         $json[] = array('value' => $subc->codsubcuenta, 'data' => $subc->descripcion, 'saldo' => $subc->saldo, 'link' => $subc->url());
     }
     header('Content-Type: application/json');
     echo json_encode(array('query' => $_REQUEST['buscar_subcuenta'], 'suggestions' => $json));
 }