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 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->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']); /// 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') { $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; } } 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 = $sub0->idsubcuenta; $partida->codsubcuenta = $sub0->codsubcuenta; $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; 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] . ' no encontrada.'); $continuar = FALSE; } } else { break; } } } 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.'); } } }
public function full_from_subcuenta($id) { $plist = array(); $ordenadas = $this->db->select("SELECT a.numero,a.fecha,p.idpartida FROM co_asientos a, co_partidas p\n WHERE a.idasiento = p.idasiento AND p.idsubcuenta = " . $this->var2str($id) . " ORDER BY a.numero ASC, p.idpartida ASC;"); if ($ordenadas) { $partida = new partida(); $saldo = 0; $sum_debe = 0; $sum_haber = 0; foreach ($ordenadas as $po) { $aux = $partida->get($po['idpartida']); if ($aux) { $aux->numero = intval($po['numero']); $aux->fecha = Date('d-m-Y', strtotime($po['fecha'])); $saldo += $aux->debe - $aux->haber; $sum_debe += $aux->debe; $sum_haber += $aux->haber; $aux->saldo = $saldo; $aux->sum_debe = $sum_debe; $aux->sum_haber = $sum_haber; $plist[] = $aux; } } } return $plist; }
public function full_from_subcuenta($id) { $plist = array(); $sql = "SELECT a.numero,a.fecha,p.idpartida FROM co_asientos a, co_partidas p" . " WHERE a.idasiento = p.idasiento AND p.idsubcuenta = " . $this->var2str($id) . " ORDER BY a.numero ASC, p.idpartida ASC"; $saldo = 0; $sum_debe = 0; $sum_haber = 0; $partida = new partida(); $offset = 0; $data = $this->db->select_limit($sql, 100, $offset); while ($data) { foreach ($data as $po) { $aux = $partida->get($po['idpartida']); if ($aux) { $aux->numero = intval($po['numero']); $aux->fecha = Date('d-m-Y', strtotime($po['fecha'])); $saldo += $aux->debe - $aux->haber; $sum_debe += $aux->debe; $sum_haber += $aux->haber; $aux->saldo = $saldo; $aux->sum_debe = $sum_debe; $aux->sum_haber = $sum_haber; $plist[] = $aux; } $offset++; } $data = $this->db->select_limit($sql, 100, $offset); } return $plist; }