protected function private_core() { /// ¿El usuario tiene permiso para eliminar en esta página? $this->allow_delete = $this->user->allow_delete_on(__CLASS__); $this->impuesto = new impuesto(); /// Leemos las subcuentas predeterminadas $subcuenta = new subcuenta(); $this->codsubcuentasop = ''; $subcuentasop = $subcuenta->get_cuentaesp('IVASOP', $this->empresa->codejercicio); if ($subcuentasop) { $this->codsubcuentasop = $subcuentasop->codsubcuenta; } $this->codsubcuentarep = ''; $subcuentarep = $subcuenta->get_cuentaesp('IVAREP', $this->empresa->codejercicio); if ($subcuentarep) { $this->codsubcuentarep = $subcuentarep->codsubcuenta; } if (isset($_GET['delete'])) { if (!$this->user->admin) { $this->new_error_msg('Sólo un administrador puede eliminar impuestos.'); } else { $impuesto = $this->impuesto->get($_GET['delete']); if ($impuesto) { if ($impuesto->delete()) { $this->new_message('Impuesto eliminado correctamente.'); } else { $this->new_error_msg('Ha sido imposible eliminar el impuesto.'); } } else { $this->new_error_msg('Impuesto no encontrado.'); } } } else { if (isset($_POST['codimpuesto'])) { $impuesto = $this->impuesto->get($_POST['codimpuesto']); if (!$impuesto) { $impuesto = new impuesto(); $impuesto->codimpuesto = $_POST['codimpuesto']; } $impuesto->descripcion = $_POST['descripcion']; $impuesto->codsubcuentarep = NULL; if ($_POST['codsubcuentarep'] != '') { $impuesto->codsubcuentarep = $_POST['codsubcuentarep']; } $impuesto->codsubcuentasop = NULL; if ($_POST['codsubcuentasop'] != '') { $impuesto->codsubcuentasop = $_POST['codsubcuentasop']; } $impuesto->iva = floatval($_POST['iva']); $impuesto->recargo = floatval($_POST['recargo']); if ($impuesto->save()) { $this->new_message("Impuesto " . $impuesto->codimpuesto . " guardado correctamente."); } else { $this->new_error_msg("¡Error al guardar el impuesto!"); } } } }
private function guardar_regiva() { $asiento = new asiento(); $ejercicio = new ejercicio(); $subcuenta = new subcuenta(); $eje0 = $ejercicio->get_by_fecha($_POST['desde'], TRUE); if ($eje0) { $continuar = TRUE; $saldo = 0; /// guardamos el asiento $asiento->codejercicio = $eje0->codejercicio; $asiento->concepto = 'REGULARIZACIÓN IVA ' . $_POST['periodo']; $asiento->fecha = $_POST['hasta']; $asiento->editable = FALSE; if (!$asiento->save()) { $this->new_error_msg('Imposible guardar el asiento.'); $continuar = FALSE; } /// obtenemos el IVA soportado $scta_ivasop = $subcuenta->get_cuentaesp('IVASOP', $eje0->codejercicio); if ($scta_ivasop) { $par0 = new partida(); $par0->idasiento = $asiento->idasiento; $par0->concepto = $asiento->concepto; $par0->coddivisa = $scta_ivasop->coddivisa; $par0->tasaconv = $scta_ivasop->tasaconv(); $par0->codsubcuenta = $scta_ivasop->codsubcuenta; $par0->idsubcuenta = $scta_ivasop->idsubcuenta; $tot_sop = $par0->totales_from_subcuenta_fechas($scta_ivasop->idsubcuenta, $_POST['desde'], $_POST['hasta']); /// invertimos el debe y el haber $par0->debe = $tot_sop['haber']; $par0->haber = $tot_sop['debe']; $saldo += $tot_sop['haber'] - $tot_sop['debe']; if (!$par0->save()) { $this->new_error_msg('Error al guardar la partida de la subcuenta de IVA soportado.'); $continuar = FALSE; } } else { $this->new_error_msg('Subcuenta de IVA soportado no encontrada.'); $continuar = FALSE; } /// obtenemos el IVA repercutido $scta_ivarep = $subcuenta->get_cuentaesp('IVAREP', $eje0->codejercicio); if ($scta_ivarep) { $par1 = new partida(); $par1->idasiento = $asiento->idasiento; $par1->concepto = $asiento->concepto; $par1->coddivisa = $scta_ivarep->coddivisa; $par1->tasaconv = $scta_ivarep->tasaconv(); $par1->codsubcuenta = $scta_ivarep->codsubcuenta; $par1->idsubcuenta = $scta_ivarep->idsubcuenta; $tot_rep = $par1->totales_from_subcuenta_fechas($scta_ivarep->idsubcuenta, $_POST['desde'], $_POST['hasta']); /// invertimos el debe y el haber $par1->debe = $tot_rep['haber']; $par1->haber = $tot_rep['debe']; $saldo += $tot_rep['haber'] - $tot_rep['debe']; if (!$par1->save()) { $this->new_error_msg('Error al guardar la partida de la subcuenta de IVA repercutido.'); $continuar = FALSE; } } else { $this->new_error_msg('Subcuenta de IVA repercutido no encontrada.'); $continuar = FALSE; } if ($continuar) { if ($saldo > 0) { $scta_ivaacr = $subcuenta->get_cuentaesp('IVAACR', $eje0->codejercicio); if ($scta_ivaacr) { $par2 = new partida(); $par2->idasiento = $asiento->idasiento; $par2->concepto = $asiento->concepto; $par2->coddivisa = $scta_ivaacr->coddivisa; $par2->tasaconv = $scta_ivaacr->tasaconv(); $par2->codsubcuenta = $scta_ivaacr->codsubcuenta; $par2->idsubcuenta = $scta_ivaacr->idsubcuenta; $par2->debe = 0; $par2->haber = $saldo; if (!$par2->save()) { $this->new_error_msg('Error al guardar la partida de la subcuenta de acreedor por IVA.'); $continuar = FALSE; } } else { $this->new_error_msg('No se encuentra la subcuenta acreedora por IVA.'); } } else { if ($saldo < 0) { $scta_ivadeu = $subcuenta->get_cuentaesp('IVADEU', $eje0->codejercicio); if ($scta_ivadeu) { $par2 = new partida(); $par2->idasiento = $asiento->idasiento; $par2->concepto = $asiento->concepto; $par2->coddivisa = $scta_ivadeu->coddivisa; $par2->tasaconv = $scta_ivadeu->tasaconv(); $par2->codsubcuenta = $scta_ivadeu->codsubcuenta; $par2->idsubcuenta = $scta_ivadeu->idsubcuenta; $par2->debe = abs($saldo); $par2->haber = 0; if (!$par2->save()) { $this->new_error_msg('Error al guardar la partida de la subcuenta deudora por IVA.'); $continuar = FALSE; } } else { $this->new_error_msg('No se encuentra la subcuenta deudora por IVA.'); } } } } else { $this->new_error_msg('Error al leer las subcuentas.'); } if ($continuar) { $this->regiva = new regularizacion_iva(); $this->regiva->codejercicio = $eje0->codejercicio; $this->regiva->fechaasiento = $asiento->fecha; $this->regiva->fechafin = $_POST['hasta']; $this->regiva->fechainicio = $_POST['desde']; $this->regiva->idasiento = $asiento->idasiento; $this->regiva->periodo = $_POST['periodo']; if ($this->regiva->save()) { $this->new_message('<a href="#" onclick="full_regiva(\'' . $this->regiva->idregiva . '\')">Regularización</a> guardada correctamente.'); } else { if ($asiento->delete()) { $this->new_error_msg('Error al guardar la regularización. Se ha eliminado el asiento.'); } else { $this->new_error_msg('Error al guardar la regularización. No se ha podido eliminar el asiento.'); } } } } else { $this->new_error_msg('El ejercicio está cerrado.'); } }
/** * Genera el asiento contable para una factura de venta. * Devuelve TRUE si el asiento se ha generado correctamente, False en caso contrario. * Si genera el asiento, este es accesible desde $this->asiento. * @param type $factura */ public function generar_asiento_venta(&$factura) { $ok = FALSE; $this->asiento = FALSE; $cliente0 = new cliente(); $subcuenta_cli = FALSE; $cliente = $cliente0->get($factura->codcliente); if ($cliente) { $subcuenta_cli = $cliente->get_subcuenta($factura->codejercicio); } if ($factura->totalirpf != 0 or $factura->totalrecargo != 0) { $this->new_error_msg('Todavía no se pueden generar asientos de facturas con IRPF o recargo.'); } else { if (!$subcuenta_cli) { $eje0 = $this->ejercicio->get($factura->codejercicio); $this->new_message("No se ha podido generar una subcuenta para el cliente\n <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>\n Aun así la <a href='" . $factura->url() . "'>factura</a> se ha generado correctamente,\n pero sin asiento contable."); } else { $asiento = new asiento(); $asiento->codejercicio = $factura->codejercicio; $asiento->concepto = "Factura de venta " . $factura->codigo . " - " . $factura->nombrecliente; $asiento->documento = $factura->codigo; $asiento->editable = FALSE; $asiento->fecha = $factura->fecha; $asiento->importe = $factura->total; $asiento->tipodocumento = 'Factura de cliente'; if ($asiento->save()) { $asiento_correcto = TRUE; $subcuenta = new subcuenta(); $partida0 = new partida(); $partida0->idasiento = $asiento->idasiento; $partida0->concepto = $asiento->concepto; $partida0->idsubcuenta = $subcuenta_cli->idsubcuenta; $partida0->codsubcuenta = $subcuenta_cli->codsubcuenta; $partida0->debe = $factura->total; $partida0->coddivisa = $factura->coddivisa; $partida0->tasaconv = $factura->tasaconv; if (!$partida0->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida0->codsubcuenta . "!"); } /// generamos una partida por cada impuesto $subcuenta_iva = $subcuenta->get_cuentaesp('IVAREP', $asiento->codejercicio); foreach ($factura->get_lineas_iva() as $li) { if ($subcuenta_iva and $asiento_correcto) { $partida1 = new partida(); $partida1->idasiento = $asiento->idasiento; $partida1->concepto = $asiento->concepto; $partida1->idsubcuenta = $subcuenta_iva->idsubcuenta; $partida1->codsubcuenta = $subcuenta_iva->codsubcuenta; $partida1->haber = $li->totaliva; $partida1->idcontrapartida = $subcuenta_cli->idsubcuenta; $partida1->codcontrapartida = $subcuenta_cli->codsubcuenta; $partida1->cifnif = $cliente->cifnif; $partida1->documento = $asiento->documento; $partida1->tipodocumento = $asiento->tipodocumento; $partida1->codserie = $factura->codserie; $partida1->factura = $factura->numero; $partida1->baseimponible = $li->neto; $partida1->iva = $li->iva; $partida1->coddivisa = $factura->coddivisa; $partida1->tasaconv = $factura->tasaconv; if (!$partida1->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida1->codsubcuenta . "!"); } } } $subcuenta_ventas = $subcuenta->get_cuentaesp('VENTAS', $asiento->codejercicio); if ($subcuenta_ventas and $asiento_correcto) { $partida2 = new partida(); $partida2->idasiento = $asiento->idasiento; $partida2->concepto = $asiento->concepto; $partida2->idsubcuenta = $subcuenta_ventas->idsubcuenta; $partida2->codsubcuenta = $subcuenta_ventas->codsubcuenta; $partida2->haber = $factura->neto; $partida2->coddivisa = $factura->coddivisa; $partida2->tasaconv = $factura->tasaconv; if (!$partida2->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida2->codsubcuenta . "!"); } } if ($asiento_correcto) { $factura->idasiento = $asiento->idasiento; if ($factura->save()) { $ok = TRUE; $this->asiento = $asiento; } else { $this->new_error_msg("¡Imposible añadir el asiento a la factura!"); } } else { if ($asiento->delete()) { $this->new_message("El asiento se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el asiento!"); } } } else { $this->new_error_msg("¡Imposible guardar el asiento!"); } } } return $ok; }
/** * Genera el asiento contable para una factura de venta. * Devuelve TRUE si el asiento se ha generado correctamente, False en caso contrario. * Si genera el asiento, este es accesible desde $this->asiento. * @param type $factura */ public function generar_asiento_venta(&$factura) { $ok = FALSE; $this->asiento = FALSE; $cliente0 = new cliente(); $subcuenta_cli = FALSE; /// obtenemos las tasas de conversión, para las ocasiones en que la factura está en otra divisa $tasaconv = 1; $tasaconv2 = $factura->tasaconv; if ($factura->coddivisa != $this->empresa->coddivisa) { $div0 = new divisa(); $divisa = $div0->get($this->empresa->coddivisa); if ($divisa) { $tasaconv = $divisa->tasaconv / $factura->tasaconv; $tasaconv2 = $divisa->tasaconv_compra; } } /// obtenemos el clientes y su subcuenta $cliente = $cliente0->get($factura->codcliente); if ($cliente) { $subcuenta_cli = $cliente->get_subcuenta($factura->codejercicio); } if (!$subcuenta_cli) { $eje0 = $this->ejercicio->get($factura->codejercicio); $this->new_message("No se ha podido generar una subcuenta para el cliente\n <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>"); if (!$this->soloasiento) { $this->new_message("Aun así la <a href='" . $factura->url() . "'>factura</a> se ha generado correctamente,\n pero sin asiento contable."); } } else { $asiento = new asiento(); $asiento->codejercicio = $factura->codejercicio; if ($factura->idfacturarect) { $asiento->concepto = ucfirst(FS_FACTURA_RECTIFICATIVA) . " de " . $factura->codigo . " (ventas) - " . $factura->nombrecliente; } else { $asiento->concepto = "Factura de venta " . $factura->codigo . " - " . $factura->nombrecliente; } $asiento->documento = $factura->codigo; $asiento->editable = FALSE; $asiento->fecha = $factura->fecha; $asiento->importe = abs($factura->total * $tasaconv); $asiento->tipodocumento = 'Factura de cliente'; if ($asiento->save()) { $asiento_correcto = TRUE; $subcuenta = new subcuenta(); $partida0 = new partida(); $partida0->idasiento = $asiento->idasiento; $partida0->concepto = $asiento->concepto; $partida0->idsubcuenta = $subcuenta_cli->idsubcuenta; $partida0->codsubcuenta = $subcuenta_cli->codsubcuenta; $partida0->debe = $factura->total * $tasaconv; $partida0->coddivisa = $this->empresa->coddivisa; $partida0->tasaconv = $tasaconv2; $partida0->codserie = $factura->codserie; if (!$partida0->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida0->codsubcuenta . "!"); } /// generamos una partida por cada impuesto foreach ($factura->get_lineas_iva() as $li) { $subcuenta_iva = FALSE; /// ¿El impuesto tiene una subcuenta específica? if (isset($this->impuestos[$li->codimpuesto])) { if ($this->impuestos[$li->codimpuesto]->codsubcuentarep) { $subcuenta_iva = $subcuenta->get_by_codigo($this->impuestos[$li->codimpuesto]->codsubcuentarep, $asiento->codejercicio); } } if (!$subcuenta_iva) { $subcuenta_iva = $subcuenta->get_cuentaesp('IVAREP', $asiento->codejercicio); } if ($subcuenta_iva and $asiento_correcto) { $partida1 = new partida(); $partida1->idasiento = $asiento->idasiento; $partida1->concepto = $asiento->concepto; $partida1->idsubcuenta = $subcuenta_iva->idsubcuenta; $partida1->codsubcuenta = $subcuenta_iva->codsubcuenta; $partida1->haber = $li->totaliva * $tasaconv; $partida1->idcontrapartida = $subcuenta_cli->idsubcuenta; $partida1->codcontrapartida = $subcuenta_cli->codsubcuenta; $partida1->cifnif = $cliente->cifnif; $partida1->documento = $asiento->documento; $partida1->tipodocumento = $asiento->tipodocumento; $partida1->codserie = $factura->codserie; $partida1->factura = $factura->numero; $partida1->baseimponible = $li->neto * $tasaconv; $partida1->iva = $li->iva; $partida1->coddivisa = $this->empresa->coddivisa; $partida1->tasaconv = $tasaconv2; if (!$partida1->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida1->codsubcuenta . "!"); } if ($li->recargo != 0) { $partida11 = new partida(); $partida11->idasiento = $asiento->idasiento; $partida11->concepto = $asiento->concepto; $partida11->idsubcuenta = $subcuenta_iva->idsubcuenta; $partida11->codsubcuenta = $subcuenta_iva->codsubcuenta; $partida11->haber = $li->totalrecargo * $tasaconv; $partida11->idcontrapartida = $subcuenta_cli->idsubcuenta; $partida11->codcontrapartida = $subcuenta_cli->codsubcuenta; $partida11->cifnif = $cliente->cifnif; $partida11->documento = $asiento->documento; $partida11->tipodocumento = $asiento->tipodocumento; $partida11->codserie = $factura->codserie; $partida11->factura = $factura->numero; $partida11->baseimponible = $li->neto * $tasaconv; $partida11->recargo = $li->recargo; $partida11->coddivisa = $this->empresa->coddivisa; $partida11->tasaconv = $tasaconv2; if (!$partida11->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida11->codsubcuenta . "!"); } } } else { if (!$subcuenta_iva) { $asiento_correcto = FALSE; $this->new_error_msg('No se encuentra la subcuenta de ' . FS_IVA); } } } $subcuenta_ventas = $subcuenta->get_cuentaesp('VENTAS', $asiento->codejercicio); if ($subcuenta_ventas and $asiento_correcto) { $partida2 = new partida(); $partida2->idasiento = $asiento->idasiento; $partida2->concepto = $asiento->concepto; $partida2->idsubcuenta = $subcuenta_ventas->idsubcuenta; $partida2->codsubcuenta = $subcuenta_ventas->codsubcuenta; $partida2->haber = $factura->neto * $tasaconv; $partida2->coddivisa = $this->empresa->coddivisa; $partida2->tasaconv = $tasaconv2; $partida2->codserie = $factura->codserie; if (!$partida2->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida2->codsubcuenta . "!"); } } else { if (!$subcuenta_ventas) { $asiento_correcto = FALSE; $this->new_error_msg('No se encuentra la subcuenta de ventas'); } } /// ¿IRPF? if ($factura->totalirpf != 0 and $asiento_correcto) { $subcuenta_irpf = $subcuenta->get_cuentaesp('IRPF', $asiento->codejercicio); if (!$subcuenta_irpf) { $subcuenta_irpf = $subcuenta->get_by_codigo('4730000000', $asiento->codejercicio); } if ($subcuenta_irpf) { $partida3 = new partida(); $partida3->idasiento = $asiento->idasiento; $partida3->concepto = $asiento->concepto; $partida3->idsubcuenta = $subcuenta_irpf->idsubcuenta; $partida3->codsubcuenta = $subcuenta_irpf->codsubcuenta; $partida3->debe = $factura->totalirpf * $tasaconv; $partida3->coddivisa = $this->empresa->coddivisa; $partida3->tasaconv = $tasaconv2; $partida3->codserie = $factura->codserie; if (!$partida3->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida3->codsubcuenta . "!"); } } else { if (!$subcuenta_irpf) { $asiento_correcto = FALSE; $this->new_error_msg('No se encuentra la subcuenta de ' . FS_IRPF); } } } /// comprobamos si algún artículo tiene una subcuenta asociada if ($asiento_correcto) { $partidaA = new partida(); $partidaA->idasiento = $asiento->idasiento; $partidaA->concepto = $asiento->concepto; $partidaA->coddivisa = $this->empresa->coddivisa; $partidaA->tasaconv = $tasaconv2; /// importe a restar a la partida2 $restar = 0; /** * Para cada artículo de la factura, buscamos su subcuenta de compra o compra con irpf */ $ap = new articulo_propiedad(); foreach ($factura->get_lineas() as $lin) { $subcart = FALSE; $aprops = $ap->array_get($lin->referencia); if (isset($aprops['codsubcuentaventa'])) { $subcart = $subcuenta->get_by_codigo($aprops['codsubcuentaventa'], $factura->codejercicio); } if (!$subcart) { /// no hay / no se encuentra ninguna subcuenta asignada al artículo } else { if ($subcart->idsubcuenta != $subcuenta_ventas->idsubcuenta) { if (is_null($partidaA->idsubcuenta)) { $partidaA->idsubcuenta = $subcart->idsubcuenta; $partidaA->codsubcuenta = $subcart->codsubcuenta; $partidaA->haber = $lin->pvptotal * $tasaconv; } else { if ($partidaA->idsubcuenta == $subcart->idsubcuenta) { $partidaA->haber += $lin->pvptotal * $tasaconv; } else { $partidaA->haber = round($partidaA->haber, FS_NF0); $restar += $partidaA->haber; if (!$partidaA->save()) { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta del artículo " . $lin->referencia . "!"); } $partidaA = new partida(); $partidaA->idasiento = $asiento->idasiento; $partidaA->concepto = $asiento->concepto; $partidaA->idsubcuenta = $subcart->idsubcuenta; $partidaA->codsubcuenta = $subcart->codsubcuenta; $partidaA->haber = $lin->pvptotal * $tasaconv; $partidaA->coddivisa = $this->empresa->coddivisa; $partidaA->tasaconv = $tasaconv2; } } } } } if ($partidaA->idsubcuenta and $partidaA->codsubcuenta) { $partidaA->haber = round($partidaA->haber, FS_NF0); $restar += $partidaA->haber; if ($partidaA->save()) { $partida2->haber -= $restar; $partida2->save(); } else { $asiento_correcto = FALSE; $this->new_error_msg("¡Imposible generar la partida para la subcuenta del artículo " . $lin->referencia . "!"); } } } if ($asiento_correcto) { /// si es una factura rectificativa, invertimos los importes if ($factura->idfacturarect) { $this->invertir_asiento($asiento); } $factura->idasiento = $asiento->idasiento; if ($factura->save()) { $ok = $this->check_asiento($asiento); if (!$ok) { $this->new_error_msg('El asiento está descuadrado.'); } $this->asiento = $asiento; } else { $this->new_error_msg("¡Imposible añadir el asiento a la factura!"); } } else { if ($asiento->delete()) { $this->new_message("El asiento se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el asiento!"); } } } else { $this->new_error_msg("¡Imposible guardar el asiento!"); } } return $ok; }
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; }