예제 #1
0
 public function __construct()
 {
     $this->asiento = FALSE;
     $this->ejercicio = new ejercicio();
     $impuesto = new impuesto();
     $this->impuestos = array();
     foreach ($impuesto->all() as $imp) {
         $this->impuestos[$imp->codimpuesto] = $imp;
     }
     $this->messages = array();
     $this->errors = array();
     $this->soloasiento = FALSE;
 }
 public function __construct()
 {
     $this->asiento = FALSE;
     $this->cuenta_banco = new cuenta_banco();
     $this->divisa = new divisa();
     $this->ejercicio = new ejercicio();
     $this->empresa = new empresa();
     $this->forma_pago = new forma_pago();
     $this->subcuenta = new subcuenta();
     $impuesto = new impuesto();
     $this->impuestos = array();
     foreach ($impuesto->all() as $imp) {
         $this->impuestos[$imp->codimpuesto] = $imp;
     }
     $this->messages = array();
     $this->errors = array();
     $this->soloasiento = FALSE;
 }
예제 #3
0
 public function impuestos()
 {
     $tratamiento = false;
     $impuestos = new impuesto();
     //Eliminamos los Impuestos que no son de RD
     $lista_impuestos = array();
     foreach ($this->impuestos_rd as $imp) {
         $lista_impuestos[] = $imp['porcentaje'];
     }
     foreach ($impuestos->all() as $imp) {
         if (!in_array($imp->iva, $lista_impuestos)) {
             $imp->delete();
         }
     }
     //Agregamos los Impuestos de RD
     foreach ($this->impuestos_rd as $imp) {
         if (!$impuestos->get_by_iva($imp['porcentaje'])) {
             $imp0 = new impuesto();
             $imp0->codimpuesto = $imp['codigo'];
             $imp0->descripcion = $imp['descripcion'];
             $imp0->iva = $imp['porcentaje'];
             $imp0->recargo = $imp['recargo'];
             $imp0->codsubcuentasop = $imp['subcuenta_compras'];
             $imp0->codsubcuentarep = $imp['subcuenta_ventas'];
             if ($imp0->save()) {
                 $tratamiento = true;
             }
         }
     }
     //Corregimos la información de las Cuentas especiales con los nombres correctos
     $cuentas_especiales_rd['IVAACR'] = 'Cuentas acreedoras de ITBIS en la regularización';
     $cuentas_especiales_rd['IVASOP'] = 'Cuentas de ITBIS Compras';
     $cuentas_especiales_rd['IVARXP'] = 'Cuentas de ITBIS exportaciones';
     $cuentas_especiales_rd['IVASIM'] = 'Cuentas de ITBIS importaciones';
     $cuentas_especiales_rd['IVAREX'] = 'Cuentas de ITBIS para clientes exentos';
     $cuentas_especiales_rd['IVAREP'] = 'Cuentas de ITBIS Ventas';
     $cuentas_especiales = new cuenta_especial();
     foreach ($cuentas_especiales_rd as $id => $desc) {
         $linea = $cuentas_especiales->get($id);
         if ($linea->descripcion !== $desc) {
             $linea->descripcion = $desc;
             $linea->save();
         }
     }
     if ($tratamiento) {
         $this->new_message('Información de impuestos actualizada correctamente');
     } else {
         $this->new_message('No se modificaron datos de impuestos previamente tratados.');
     }
 }
예제 #4
0
 private function generar_albaran()
 {
     $albaran = new albaran_cliente();
     $albaran->apartado = $this->servicio->apartado;
     $albaran->cifnif = $this->servicio->cifnif;
     $albaran->ciudad = $this->servicio->ciudad;
     $albaran->codagente = $this->servicio->codagente;
     if ($this->servicio->codalmacen) {
         $albaran->codalmacen = $this->servicio->codalmacen;
     } else {
         $albaran->codalmacen = $this->empresa->codalmacen;
     }
     $albaran->codcliente = $this->servicio->codcliente;
     $albaran->coddir = $this->servicio->coddir;
     $albaran->coddivisa = $this->servicio->coddivisa;
     $albaran->tasaconv = $this->servicio->tasaconv;
     $albaran->codpago = $this->servicio->codpago;
     $albaran->codpais = $this->servicio->codpais;
     $albaran->codpostal = $this->servicio->codpostal;
     $albaran->codserie = $this->servicio->codserie;
     $albaran->direccion = $this->servicio->direccion;
     $albaran->neto = $this->servicio->neto;
     $albaran->nombrecliente = $this->servicio->nombrecliente;
     $albaran->observaciones = $this->servicio->observaciones;
     $albaran->provincia = $this->servicio->provincia;
     $albaran->total = $this->servicio->total;
     $albaran->totaliva = $this->servicio->totaliva;
     $albaran->numero2 = $this->servicio->numero2;
     $albaran->irpf = $this->servicio->irpf;
     $albaran->porcomision = $this->servicio->porcomision;
     $albaran->totalirpf = $this->servicio->totalirpf;
     $albaran->totalrecargo = $this->servicio->totalrecargo;
     /**
      * Obtenemos el ejercicio para la fecha de hoy (puede que
      * no sea el mismo ejercicio que el del servicio, por ejemplo
      * si hemos cambiado de año)
      */
     $eje0 = $this->ejercicio->get_by_fecha($albaran->fecha);
     $albaran->codejercicio = $eje0->codejercicio;
     if (!$eje0) {
         $this->new_error_msg("Ejercicio no encontrado.");
     } else {
         if (!$eje0->abierto()) {
             $this->new_error_msg("El ejercicio está cerrado.");
         } else {
             if ($albaran->save()) {
                 $this->new_message("El " . FS_ALBARAN . " " . $albaran->codigo . " ha sido creado correctamente.");
                 $continuar = TRUE;
                 $art0 = new articulo();
                 $i = 0;
                 foreach ($this->servicio->get_lineas() as $l) {
                     $n = new linea_albaran_cliente();
                     $n->idalbaran = $albaran->idalbaran;
                     $n->cantidad = $l->cantidad;
                     $n->codimpuesto = $l->codimpuesto;
                     $n->descripcion = $l->descripcion;
                     if ($i == 0) {
                         if ($this->setup['servicios_linea'] && $this->setup['servicios_linea1']) {
                             $n->descripcion .= "\n";
                             if ($this->setup['servicios_material_linea']) {
                                 $n->descripcion .= $this->setup['st_material'] . ": " . $this->servicio->material . "\n";
                             }
                             if ($this->setup['servicios_material_estado_linea']) {
                                 $n->descripcion .= $this->setup['st_material_estado'] . ": " . $this->servicio->material_estado . "\n";
                             }
                             if ($this->setup['servicios_accesorios_linea']) {
                                 $n->descripcion .= $this->setup['st_accesorios'] . ": " . $this->servicio->accesorios . "\n";
                             }
                             if ($this->setup['servicios_descripcion_linea']) {
                                 $n->descripcion .= $this->setup['st_descripcion'] . ": " . $this->servicio->descripcion . "\n";
                             }
                             if ($this->setup['servicios_solucion_linea']) {
                                 $n->descripcion .= $this->setup['st_solucion'] . ": " . $this->servicio->solucion . "\n";
                             }
                             if ($this->setup['servicios_fechainicio_linea']) {
                                 $n->descripcion .= $this->setup['st_fechainicio'] . ": " . $this->servicio->fechainicio . "   ";
                             }
                             if ($this->setup['servicios_fechafin_linea']) {
                                 $n->descripcion .= $this->setup['st_fechafin'] . ": " . $this->servicio->fechafin . "   ";
                             }
                             if ($this->setup['servicios_garantia_linea']) {
                                 $n->descripcion .= $this->setup['st_garantia'] . ": " . $this->servicio->garantia . "\n";
                             }
                         }
                     }
                     $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;
                     $i++;
                     if ($n->save()) {
                         /// descontamos del stock
                         if (!is_null($n->referencia)) {
                             $articulo = $art0->get($n->referencia);
                             if ($articulo) {
                                 $articulo->sum_stock($albaran->codalmacen, 0 - $l->cantidad);
                             }
                         }
                     } else {
                         $continuar = FALSE;
                         $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! ");
                         break;
                     }
                 }
                 if ($this->setup['servicios_linea'] && !$this->setup['servicios_linea1']) {
                     /// generamos la linea con detalles del servicio
                     if ($this->setup['servicios_linea']) {
                         $ns = new linea_albaran_cliente();
                         $ns->idalbaran = $albaran->idalbaran;
                         $ns->cantidad = '0';
                         /// usamos el impuestos por defecto
                         $imp0 = new impuesto();
                         foreach ($imp0->all() as $imp) {
                             if ($imp->is_default()) {
                                 $ns->codimpuesto = $imp->codimpuesto;
                                 $ns->iva = $imp->iva;
                             }
                         }
                         $ns->descripcion = FS_SERVICIO . ": " . $this->servicio->codigo . " Fecha: " . $this->servicio->fecha . "\n";
                         if ($this->setup['servicios_material_linea']) {
                             $ns->descripcion .= $this->setup['st_material'] . ": " . $this->servicio->material . "\n";
                         }
                         if ($this->setup['servicios_material_estado_linea']) {
                             $ns->descripcion .= $this->setup['st_material_estado'] . ": " . $this->servicio->material_estado . "\n";
                         }
                         if ($this->setup['servicios_accesorios_linea']) {
                             $ns->descripcion .= $this->setup['st_accesorios'] . ": " . $this->servicio->accesorios . "\n";
                         }
                         if ($this->setup['servicios_descripcion_linea']) {
                             $ns->descripcion .= $this->setup['st_descripcion'] . ": " . $this->servicio->descripcion . "\n";
                         }
                         if ($this->setup['servicios_solucion_linea']) {
                             $ns->descripcion .= $this->setup['st_solucion'] . ": " . $this->servicio->solucion . "\n";
                         }
                         if ($this->setup['servicios_fechainicio_linea']) {
                             $ns->descripcion .= $this->setup['st_fechainicio'] . ": " . $this->servicio->fechainicio . "   ";
                         }
                         if ($this->setup['servicios_fechafin_linea']) {
                             $ns->descripcion .= $this->setup['st_fechafin'] . ": " . $this->servicio->fechafin . "   ";
                         }
                         if ($this->setup['servicios_garantia_linea']) {
                             $ns->descripcion .= $this->setup['st_garantia'] . ": " . $this->servicio->garantia . "\n";
                         }
                         $ns->dtopor = '0';
                         $ns->irpf = '0';
                         $ns->pvpsindto = '0';
                         $ns->pvptotal = '0';
                         $ns->pvpunitario = '0';
                         $ns->recargo = '0';
                         $ns->referencia = '';
                         $ns->save();
                     }
                 }
                 if ($continuar) {
                     $this->servicio->idalbaran = $albaran->idalbaran;
                 } else {
                     if ($albaran->delete()) {
                         $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado.");
                     } else {
                         $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Imposible guardar el " . FS_ALBARAN . "!");
             }
         }
     }
 }