/** * Devuelve la subcuenta asociada al cliente para el ejercicio $eje. * Si no existe intenta crearla. Si falla devuelve FALSE. * @param type $ejercicio * @return subcuenta */ public function get_subcuenta($ejercicio) { $subcuenta = FALSE; foreach ($this->get_subcuentas() as $s) { if ($s->codejercicio == $ejercicio) { $subcuenta = $s; break; } } if (!$subcuenta) { /// intentamos crear la subcuenta y asociarla $continuar = TRUE; $cuenta = new cuenta(); $ccli = $cuenta->get_cuentaesp('CLIENT', $ejercicio); if ($ccli) { $subc0 = $ccli->new_subcuenta($this->codcliente); $subc0->descripcion = $this->nombre; if (!$subc0->save()) { $this->new_error_msg('Imposible crear la subcuenta para el cliente ' . $this->codcliente); $continuar = FALSE; } if ($continuar) { $sccli = new subcuenta_cliente(); $sccli->codcliente = $this->codcliente; $sccli->codejercicio = $ejercicio; $sccli->codsubcuenta = $subc0->codsubcuenta; $sccli->idsubcuenta = $subc0->idsubcuenta; if ($sccli->save()) { $subcuenta = $subc0; } else { $this->new_error_msg('Imposible asociar la subcuenta para el cliente ' . $this->codcliente); } } } else { $this->new_error_msg('No se encuentra ninguna cuenta especial para clientes.'); } } return $subcuenta; }
/** * Devuelve la subcuenta asignada al proveedor para el ejercicio $eje, * si no hay una subcuenta asignada, intenta crearla. Si falla devuelve FALSE. * @param type $eje * @return subcuenta */ public function get_subcuenta($eje) { $subcuenta = FALSE; foreach ($this->get_subcuentas() as $s) { if ($s->codejercicio == $eje) { $subcuenta = $s; break; } } if (!$subcuenta) { /// intentamos crear la subcuenta y asociarla $continuar = TRUE; $cuenta = new cuenta(); if ($this->acreedor) { $cpro = $cuenta->get_cuentaesp('ACREED', $eje); if (!$cpro) { $cpro = $cuenta->get_by_codigo('410', $eje); } } else { $cpro = $cuenta->get_cuentaesp('PROVEE', $eje); } if ($cpro) { $subc0 = $cpro->new_subcuenta($this->codproveedor); $subc0->descripcion = $this->razonsocial; if (!$subc0->save()) { $this->new_error_msg('Imposible crear la subcuenta para el proveedor ' . $this->codproveedor); $continuar = FALSE; } if ($continuar) { $scpro = new subcuenta_proveedor(); $scpro->codejercicio = $eje; $scpro->codproveedor = $this->codproveedor; $scpro->codsubcuenta = $subc0->codsubcuenta; $scpro->idsubcuenta = $subc0->idsubcuenta; if ($scpro->save()) { $subcuenta = $subc0; } else { $this->new_error_msg('Imposible asociar la subcuenta para el proveedor ' . $this->codproveedor); } } } else { $this->new_error_msg('No se encuentra ninguna cuenta especial para proveedores.'); } } return $subcuenta; }
public function get_subcuenta($ejercicio) { $subcuenta = FALSE; foreach ($this->get_subcuentas() as $s) { if ($s->codejercicio == $ejercicio) { $subcuenta = $s; break; } } if (!$subcuenta) { /// intentamos crear la subcuenta y asociarla $continuar = TRUE; $cuentaesp = $this->codtrans == 'LOCAL' ? 'CXCPRO' : 'CXCTER'; $cond0 = new distribucion_conductores(); $conductor = $cond0->get($this->idempresa, $this->conductor); $cuenta = new cuenta(); $ctafaltante = $cuenta->get_cuentaesp($cuentaesp, $ejercicio); if ($ctafaltante) { $subc0 = $ctafaltante->new_subcuenta($conductor[0]->id); $subc0->descripcion = $this->nombreconductor; if (!$subc0->save()) { $this->new_error_msg('Imposible crear la subcuenta para el conductor ' . $this->nombreconductor); $continuar = FALSE; } if ($continuar) { $scconductor = new distribucion_subcuentas_faltantes(); $scconductor->idempresa = $this->idempresa; $scconductor->conductor = $this->conductor; $scconductor->codejercicio = $ejercicio; $scconductor->codsubcuenta = $subc0->codsubcuenta; $scconductor->idsubcuenta = $subc0->idsubcuenta; if ($scconductor->save()) { $subcuenta = $subc0; } else { $this->new_error_msg('Imposible asociar la subcuenta para el conductor ' . $this->nombreconductor); } } } else { $this->new_error_msg('No se encuentra ninguna cuenta especial para Faltantes Propios (CXCPRO) o de Terceros (CXCTER).'); } } return $subcuenta; }