private function modificar() { /// obtenemos el ejercicio para poder acotar la fecha $eje0 = $this->ejercicio->get($this->asiento->codejercicio); if ($eje0) { $this->asiento->fecha = $eje0->get_best_fecha($_POST['fecha']); } else { $this->new_error_msg('No se encuentra el ejercicio asociado al asiento.'); } $this->asiento->concepto = $_POST['concepto']; $this->asiento->tipodocumento = $_POST['concepto']; $this->asiento->cambio_concepto(); $this->asiento->importe = floatval($_POST['importe']); /// obtenemos la divisa de las partidas $div0 = $this->divisa->get($_POST['divisa']); if ($div0) { $this->save_coddivisa($div0->coddivisa); } if (!$eje0 or !$div0) { $this->new_error_msg('Imposible modificar el asiento.'); } else { if ($this->asiento->save()) { $continuar = TRUE; $numlineas = intval($_POST['numlineas']); // $this->asiento->tipodocumento = $this->asiento->concepto; /// eliminamos las partidas que faltan foreach ($this->asiento->get_partidas() as $pa) { $encontrada = FALSE; for ($i = 1; $i <= $numlineas; $i++) { if (isset($_POST['idpartida_' . $i])) { if (intval($_POST['idpartida_' . $i]) == $pa->idpartida) { $encontrada = TRUE; break; } } } if (!$encontrada) { if (!$pa->delete()) { $this->new_error_msg('Imposible eliminar la línea debe=' . $pa->debe . ' haber=' . $pa->haber); $continuar = FALSE; break; } } } /// añadimos y modificamos $npartida = new partida(); for ($i = 1; $i <= $numlineas; $i++) { if (isset($_POST['idpartida_' . $i])) { if ($_POST['idpartida_' . $i] == '-1') { /// las nuevas líneas llevan idpartida = -1 $partida = new partida(); } else { $partida = $npartida->get($_POST['idpartida_' . $i]); if (!$partida) { $this->new_error_msg('Partida de ' . $_POST['codsubcuenta_' . $i] . ' no encontrada.'); $continuar = FALSE; } } // borra la partida para poner nuevos valores $partida->delete(); if ($continuar) { /// añadimos $sub0 = $this->subcuenta->get_by_codigo($_POST['codsubcuenta_' . $i], $eje0->codejercicio); if ($sub0) { $partida->idasiento = $this->asiento->idasiento; $partida->coddivisa = $div0->coddivisa; $partida->tasaconv = $div0->tasaconv; $partida->idsubcuenta = $_POST['idsubcuenta_' . $i]; $partida->codsubcuenta = $_POST['codsubcuenta_' . $i]; $partida->debe = floatval($_POST['debe_' . $i]); $partida->haber = floatval($_POST['haber_' . $i]); $partida->idconcepto = $this->asiento->idconcepto; $partida->concepto = $this->asiento->concepto; $partida->documento = $this->asiento->documento; $partida->tipodocumento = $this->asiento->tipodocumento; $partida->comprobante = $_POST['comp_' . $i]; $partida->referencia = $_POST['ref_' . $i]; if (isset($_POST['codcontrapartida_' . $i])) { if ($_POST['codcontrapartida_' . $i] != '') { $subc1 = $this->subcuenta->get_by_codigo($_POST['codcontrapartida_' . $i], $eje0->codejercicio); if ($subc1) { $partida->idcontrapartida = $subc1->idsubcuenta; $partida->codcontrapartida = $subc1->codsubcuenta; $partida->cifnif = $_POST['cifnif_' . $i]; $partida->iva = floatval($_POST['iva_' . $i]); $partida->baseimponible = floatval($_POST['baseimp_' . $i]); } else { $this->new_error_msg('Subcuenta ' . $_POST['codcontrapartida_' . $i] . ' no encontrada.'); $continuar = FALSE; } } } if (!$partida->save()) { $this->new_error_msg('Imposible guardar la partida de la subcuenta ' . $_POST['codsubcuenta_' . $i] . '.'); $continuar = FALSE; } } else { $this->new_error_msg('Subcuenta ' . $_POST['codsubcuenta_' . $i] . ' de la línea ' . $i . ' no encontrada.'); $continuar = FALSE; } } else { break; } } } // Después de que se hicieron todas las actualizaciones cargo las partidas existentes y actualizo // al array contabilidad_asiento::$partidas para que se actualicen con las generadas por las cajas contabilidad_asiento::cargar_partidas($this->asiento, $div0); if (isset($_POST['importar_caja']) && filter_var($_POST['importar_caja'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) === true) { if ($continuar) { $continuar = contabilidad_asiento::importar_caja($this->asiento, $div0, $this); } else { $this->new_error_msg("Hay algún error relacionado a este asiento, imposible importar cajas"); } } if ($continuar) { $this->new_message('Asiento modificado correctamente.'); $this->new_change('Asiento ' . $this->asiento->numero, $this->asiento->url()); } } else { $this->new_error_msg('Imposible modificar el asiento.'); } } }
private function nuevo_asiento_modelo130() { $continuar = TRUE; $eje0 = $this->ejercicio->get_by_fecha($_POST['fecha']); if (!$eje0) { $this->new_error_msg('Ejercicio no encontrado.'); $continuar = FALSE; } $div0 = $this->divisa->get($_POST['divisa']); if (!$div0) { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } if ($this->duplicated_petition($_POST['petition_id'])) { $this->new_error_msg('Petición duplicada. Has hecho doble clic sobre el botón Guardar y se han enviado dos peticiones. Mira en <a href="' . $this->ppage->url() . '">asientos</a> para ver si el asiento se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $meses = array('', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'); $codcaja = '5700000000'; if (isset($_POST['banco130'])) { if ($_POST['banco130'] != '') { $codcaja = $_POST['banco130']; } } /// asiento de cuota $asiento = new asiento(); $asiento->codejercicio = $eje0->codejercicio; $asiento->concepto = 'Pago modelo 130 ' . $meses[intval(date('m', strtotime($_POST['fecha'])))]; $asiento->fecha = $_POST['fecha']; $asiento->importe = floatval($_POST['modelo130']); if ($asiento->save()) { $subc = $this->subcuenta->get_by_codigo('4730000000', $eje0->codejercicio); if ($subc) { $partida = new partida(); $partida->idasiento = $asiento->idasiento; $partida->concepto = $asiento->concepto; $partida->idsubcuenta = $subc->idsubcuenta; $partida->codsubcuenta = $subc->codsubcuenta; $partida->debe = $asiento->importe; $partida->save(); } else { $this->new_error_msg('Subcuenta 4730000000 no encontrada.'); $continuar = FALSE; } $subc = $this->subcuenta->get_by_codigo($codcaja, $eje0->codejercicio); if ($subc) { $partida = new partida(); $partida->idasiento = $asiento->idasiento; $partida->concepto = $asiento->concepto; $partida->idsubcuenta = $subc->idsubcuenta; $partida->codsubcuenta = $subc->codsubcuenta; $partida->haber = $asiento->importe; $partida->save(); } else { $this->new_error_msg('Subcuenta ' . $codcaja . ' no encontrada.'); $continuar = FALSE; } if ($continuar) { $this->new_message("<a href='" . $asiento->url() . "'>Asiento de pago</a> guardado correctamente!"); } else { if ($asiento->delete()) { $this->new_error_msg("¡Error en alguna de las partidas! Se ha borrado el asiento."); } else { $this->new_error_msg("¡Error en alguna de las partidas! Además ha sido imposible borrar el asiento."); } } } else { $this->new_error_msg("¡Imposible guardar el asiento!"); } } }
public function asiento_url(asiento $asiento) { return $asiento->url(); }
private function nuevo_asiento_pago($importe, $coddivisa, $tasaconv) { $asiento = new asiento(); $asiento->concepto = 'Pago facturas de ' . $this->proveedor->nombre; $asiento->editable = FALSE; $asiento->importe = $importe; $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($this->today()); if ($ejercicio) { $asiento->codejercicio = $ejercicio->codejercicio; } $subcuenta_pro = $this->proveedor->get_subcuenta($ejercicio->codejercicio); $subc0 = new subcuenta(); $subcaja = $subc0->get_cuentaesp('CAJA', $ejercicio->codejercicio); if (!$ejercicio) { $this->new_error_msg('Ningún ejercico encontrado.'); } else { if (!$ejercicio->abierto()) { $this->new_error_msg('El ejercicio ' . $ejercicio->codejercicio . ' está cerrado.'); } else { if (!$subcuenta_pro) { $this->new_message("No se ha podido generar una subcuenta para el proveedor " . "<a href='" . $ejercicio->url() . "'>¿Has importado los datos del ejercicio?</a>"); } else { if (!$subcaja) { $this->new_message("No se ha encontrado la subcuenta de caja " . "<a href='" . $ejercicio->url() . "'>¿Has importado los datos del ejercicio?</a>"); } else { if ($asiento->save()) { $partida1 = new partida(); $partida1->idasiento = $asiento->idasiento; $partida1->concepto = $asiento->concepto; $partida1->idsubcuenta = $subcuenta_pro->idsubcuenta; $partida1->codsubcuenta = $subcuenta_pro->codsubcuenta; $partida1->debe = $importe; $partida1->coddivisa = $coddivisa; $partida1->tasaconv = $tasaconv; $partida1->codserie = $this->codserie; $partida1->save(); $partida2 = new partida(); $partida2->idasiento = $asiento->idasiento; $partida2->concepto = $asiento->concepto; $partida2->idsubcuenta = $subcaja->idsubcuenta; $partida2->codsubcuenta = $subcaja->codsubcuenta; $partida2->haber = $importe; $partida2->coddivisa = $coddivisa; $partida2->tasaconv = $tasaconv; $partida2->codserie = $this->codserie; $partida2->save(); $this->new_message('<a href="' . $asiento->url() . '">Asiento de pago</a> generado.'); } else { $this->new_error_msg('Error al guardar el asiento.'); } } } } } return $asiento; }