예제 #1
0
 private function nuevo_pedido_cliente()
 {
     $continuar = TRUE;
     $cliente = $this->cliente->get($_POST['cliente']);
     if (!$cliente) {
         $this->new_error_msg('Cliente no encontrado.');
         $continuar = FALSE;
     }
     $almacen = $this->almacen->get($_POST['almacen']);
     if ($almacen) {
         $this->save_codalmacen($_POST['almacen']);
     } else {
         $this->new_error_msg('Almacén no encontrado.');
         $continuar = FALSE;
     }
     $eje0 = new ejercicio();
     $ejercicio = $eje0->get_by_fecha($_POST['fecha']);
     if (!$ejercicio) {
         $this->new_error_msg('Ejercicio no encontrado.');
         $continuar = FALSE;
     }
     $serie = $this->serie->get($_POST['serie']);
     if (!$serie) {
         $this->new_error_msg('Serie no encontrada.');
         $continuar = FALSE;
     }
     $forma_pago = $this->forma_pago->get($_POST['forma_pago']);
     if ($forma_pago) {
         $this->save_codpago($_POST['forma_pago']);
     } else {
         $this->new_error_msg('Forma de pago no encontrada.');
         $continuar = FALSE;
     }
     $divisa = $this->divisa->get($_POST['divisa']);
     if (!$divisa) {
         $this->new_error_msg('Divisa no encontrada.');
         $continuar = FALSE;
     }
     $pedido = new pedido_cliente();
     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="' . $pedido->url() . '">Pedidos</a>
            para ver si el pedido se ha guardado correctamente.');
         $continuar = FALSE;
     }
     if ($continuar) {
         $pedido->fecha = $_POST['fecha'];
         $pedido->codalmacen = $almacen->codalmacen;
         $pedido->codejercicio = $ejercicio->codejercicio;
         $pedido->codserie = $serie->codserie;
         $pedido->codpago = $forma_pago->codpago;
         $pedido->coddivisa = $divisa->coddivisa;
         $pedido->tasaconv = $divisa->tasaconv;
         if ($_POST['tasaconv'] != '') {
             $pedido->tasaconv = floatval($_POST['tasaconv']);
         }
         $pedido->codagente = $this->agente->codagente;
         $pedido->observaciones = $_POST['observaciones'];
         $pedido->numero2 = $_POST['numero2'];
         $pedido->irpf = $serie->irpf;
         $pedido->porcomision = $this->agente->porcomision;
         $pedido->codcliente = $cliente->codcliente;
         $pedido->cifnif = $cliente->cifnif;
         $pedido->nombrecliente = $cliente->razonsocial;
         $pedido->ciudad = $_POST['ciudad'];
         $pedido->codpais = $_POST['codpais'];
         $pedido->codpostal = $_POST['codpostal'];
         $pedido->direccion = $_POST['direccion'];
         $pedido->provincia = $_POST['provincia'];
         if ($pedido->save()) {
             $art0 = new articulo();
             $n = floatval($_POST['numlineas']);
             for ($i = 0; $i <= $n; $i++) {
                 if (isset($_POST['referencia_' . $i])) {
                     $linea = new linea_pedido_cliente();
                     $linea->idpedido = $pedido->idpedido;
                     $linea->descripcion = $_POST['desc_' . $i];
                     if (!$serie->siniva and $cliente->regimeniva != 'Exento') {
                         $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $i]);
                         if ($imp0) {
                             $linea->codimpuesto = $imp0->codimpuesto;
                             $linea->iva = floatval($_POST['iva_' . $i]);
                             $linea->recargo = floatval($_POST['recargo_' . $i]);
                         } else {
                             $linea->iva = floatval($_POST['iva_' . $i]);
                             $linea->recargo = floatval($_POST['recargo_' . $i]);
                         }
                     }
                     $linea->irpf = floatval($_POST['irpf_' . $i]);
                     $linea->pvpunitario = floatval($_POST['pvp_' . $i]);
                     $linea->cantidad = floatval($_POST['cantidad_' . $i]);
                     $linea->dtopor = floatval($_POST['dto_' . $i]);
                     $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad;
                     $linea->pvptotal = floatval($_POST['neto_' . $i]);
                     $articulo = $art0->get($_POST['referencia_' . $i]);
                     if ($articulo) {
                         $linea->referencia = $articulo->referencia;
                     }
                     if ($linea->save()) {
                         $pedido->neto += $linea->pvptotal;
                         $pedido->totaliva += $linea->pvptotal * $linea->iva / 100;
                         $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100;
                         $pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100;
                     } else {
                         $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia);
                         $continuar = FALSE;
                     }
                 }
             }
             if ($continuar) {
                 /// redondeamos
                 $pedido->neto = round($pedido->neto, FS_NF0);
                 $pedido->totaliva = round($pedido->totaliva, FS_NF0);
                 $pedido->totalirpf = round($pedido->totalirpf, FS_NF0);
                 $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0);
                 $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo;
                 if (abs(floatval($_POST['atotal']) - $pedido->total) >= 0.02) {
                     $this->new_error_msg("El total difiere entre el controlador y la vista (" . $pedido->total . " frente a " . $_POST['atotal'] . "). Debes informar del error.");
                     $pedido->delete();
                 } else {
                     if ($pedido->save()) {
                         $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . "</a> guardado correctamente.");
                         $this->new_change(ucfirst(FS_PEDIDO) . " a Cliente " . $pedido->codigo, $pedido->url(), TRUE);
                         if ($_POST['redir'] == 'TRUE') {
                             header('Location: ' . $pedido->url());
                         }
                     } else {
                         $this->new_error_msg("¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!");
                     }
                 }
             } else {
                 if ($pedido->delete()) {
                     $this->new_message(ucfirst(FS_PEDIDO) . " eliminado correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!");
                 }
             }
         } else {
             $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!");
         }
     }
 }
예제 #2
0
 private function generar_pedido()
 {
     $pedido = new pedido_cliente();
     $pedido->apartado = $this->presupuesto->apartado;
     $pedido->cifnif = $this->presupuesto->cifnif;
     $pedido->ciudad = $this->presupuesto->ciudad;
     $pedido->codagente = $this->presupuesto->codagente;
     $pedido->codalmacen = $this->presupuesto->codalmacen;
     $pedido->codcliente = $this->presupuesto->codcliente;
     $pedido->coddir = $this->presupuesto->coddir;
     $pedido->coddivisa = $this->presupuesto->coddivisa;
     $pedido->tasaconv = $this->presupuesto->tasaconv;
     $pedido->codpago = $this->presupuesto->codpago;
     $pedido->codpais = $this->presupuesto->codpais;
     $pedido->codpostal = $this->presupuesto->codpostal;
     $pedido->codserie = $this->presupuesto->codserie;
     $pedido->direccion = $this->presupuesto->direccion;
     $pedido->neto = $this->presupuesto->neto;
     $pedido->nombrecliente = $this->presupuesto->nombrecliente;
     $pedido->observaciones = $this->presupuesto->observaciones;
     $pedido->provincia = $this->presupuesto->provincia;
     $pedido->total = $this->presupuesto->total;
     $pedido->totaliva = $this->presupuesto->totaliva;
     $pedido->numero2 = $this->presupuesto->numero2;
     $pedido->irpf = $this->presupuesto->irpf;
     $pedido->porcomision = $this->presupuesto->porcomision;
     $pedido->totalirpf = $this->presupuesto->totalirpf;
     $pedido->totalrecargo = $this->presupuesto->totalrecargo;
     /**
      * Obtenemos el ejercicio para la fecha de hoy (puede que no sea
      * el mismo ejercicio que el del presupuesto, por ejemplo si hemos cambiado de año).
      */
     $eje0 = $this->ejercicio->get_by_fecha($pedido->fecha, FALSE);
     if ($eje0) {
         $pedido->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 ($pedido->save()) {
                 $continuar = TRUE;
                 foreach ($this->presupuesto->get_lineas() as $l) {
                     $n = new linea_pedido_cliente();
                     $n->idlineapresupuesto = $l->idlinea;
                     $n->idpresupuesto = $l->idpresupuesto;
                     $n->idpedido = $pedido->idpedido;
                     $n->cantidad = $l->cantidad;
                     $n->codimpuesto = $l->codimpuesto;
                     $n->descripcion = $l->descripcion;
                     $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;
                     if (!$n->save()) {
                         $continuar = FALSE;
                         $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! ");
                         break;
                     }
                 }
                 if ($continuar) {
                     $this->presupuesto->idpedido = $pedido->idpedido;
                     if ($this->presupuesto->save()) {
                         $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . '</a> generado correctamente.');
                     } else {
                         $this->new_error_msg("¡Imposible vincular el " . FS_PRESUPUESTO . " con el nuevo " . FS_PEDIDO . "!");
                         if ($pedido->delete()) {
                             $this->new_error_msg("El " . FS_PEDIDO . " se ha borrado.");
                         } else {
                             $this->new_error_msg("¡Imposible borrar el " . FS_PEDIDO . "!");
                         }
                     }
                 } else {
                     if ($pedido->delete()) {
                         $this->new_error_msg("El " . FS_PEDIDO . " se ha borrado.");
                     } else {
                         $this->new_error_msg("¡Imposible borrar el " . FS_PEDIDO . "!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!");
             }
         }
     }
 }
예제 #3
0
 private function nuevo_pedido_cliente($p)
 {
     $respuesta = "";
     $continuar = TRUE;
     $cliente = $this->cliente->get($p['cliente']);
     if (!$cliente) {
         $respuesta .= 'Cliente no encontrado.';
         $continuar = FALSE;
     }
     $almacen = $this->almacen->get($p['almacen']);
     if ($almacen) {
         //print_r($almacen);
         // $this->save_codalmacen($p['almacen']);
     } else {
         echo 'Almacén no encontrado.';
         $continuar = FALSE;
     }
     $eje0 = new ejercicio();
     $ejercicio = $eje0->get_by_fecha($p['fecha']);
     if (!$ejercicio) {
         echo 'Ejercicio no encontrado.';
         $continuar = FALSE;
     }
     $serie = $this->serie->get($p['serie']);
     if (!$serie) {
         echo 'Serie no encontrada.';
         $continuar = FALSE;
     }
     $forma_pago = $this->forma_pago->get($p['forma_pago']);
     if ($forma_pago) {
         //$this->save_codpago($p['forma_pago']);
     } else {
         echo 'Forma de pago no encontrada.';
         $continuar = FALSE;
     }
     $divisa = $this->divisa->get($p['divisa']);
     if (!$divisa) {
         echo 'Divisa no encontrada.';
         $continuar = FALSE;
     }
     $pedido = new pedido_cliente();
     if ($continuar) {
         $pedido->fecha = $p['fecha'];
         $pedido->codalmacen = $almacen->codalmacen;
         $pedido->codejercicio = $ejercicio->codejercicio;
         $pedido->codserie = $serie->codserie;
         $pedido->codpago = $forma_pago->codpago;
         $pedido->coddivisa = $divisa->coddivisa;
         $pedido->tasaconv = $divisa->tasaconv;
         $pedido->numero2 = $p['numero2'];
         $pedido->codagente = $this->agente->codagente;
         $pedido->observaciones = $p['observaciones'];
         $pedido->irpf = $serie->irpf;
         $pedido->porcomision = $this->agente->porcomision;
         $pedido->codcliente = $cliente->codcliente;
         $pedido->cifnif = $cliente->cifnif;
         $pedido->nombrecliente = $cliente->nombre;
         $direccion = array();
         foreach ($cliente->get_direcciones() as $dir) {
             if ($dir->domfacturacion) {
                 $direccion = $dir;
                 break;
             }
         }
         $pedido->ciudad = $direccion->ciudad;
         $pedido->codpais = $direccion->codpais;
         $pedido->codpostal = $direccion->codpostal;
         $pedido->direccion = $direccion->direccion;
         $pedido->provincia = $direccion->provincia;
         if ($pedido->save()) {
             $art0 = new articulo();
             $n = floatval($p['numlineas']);
             for ($i = 0; $i <= $n; $i++) {
                 if (isset($p['referencia_' . $i])) {
                     $linea = new linea_pedido_cliente();
                     $linea->idpedido = $pedido->idpedido;
                     $linea->descripcion = $p['desc_' . $i];
                     if (!$serie->siniva and $cliente->regimeniva != 'Exento') {
                         $imp0 = $this->impuesto->get_by_iva($p['iva_' . $i]);
                         if ($imp0) {
                             $linea->codimpuesto = $imp0->codimpuesto;
                             $linea->iva = floatval($p['iva_' . $i]);
                             $linea->recargo = floatval($p['recargo_' . $i]);
                         } else {
                             $linea->iva = floatval($p['iva_' . $i]);
                             $linea->recargo = floatval($p['recargo_' . $i]);
                         }
                     }
                     $linea->irpf = floatval($p['irpf_' . $i]);
                     $linea->pvpunitario = floatval($p['pvp_' . $i]);
                     $linea->cantidad = floatval($p['cantidad_' . $i]);
                     $linea->dtopor = floatval($p['dto_' . $i]);
                     $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad;
                     $linea->pvptotal = floatval($p['neto_' . $i]);
                     $articulo = $art0->get($p['referencia_' . $i]);
                     if ($articulo) {
                         $linea->referencia = $articulo->referencia;
                     }
                     if ($linea->save()) {
                         $pedido->neto += $linea->pvptotal;
                         $pedido->totaliva += $linea->pvptotal * $linea->iva / 100;
                         $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100;
                         $pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100;
                     } else {
                         $respuesta .= "¡Imposible guardar la linea con referencia: " . $linea->referencia;
                         $continuar = FALSE;
                     }
                 }
             }
             if ($continuar) {
                 /// redondeamos
                 $pedido->neto = round($pedido->neto, FS_NF0);
                 $pedido->totaliva = round($pedido->totaliva, FS_NF0);
                 $pedido->totalirpf = round($pedido->totalirpf, FS_NF0);
                 $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0);
                 $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo;
                 if ($pedido->save()) {
                     $respuesta .= "Pedido correcto";
                 } else {
                     $respuesta .= "¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!";
                 }
             } else {
                 if ($pedido->delete()) {
                     $respuesta .= ucfirst(FS_PEDIDO) . " eliminado correctamente.";
                 } else {
                     $respuesta .= "¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!";
                 }
             }
         } else {
             $respuesta .= "¡Imposible guardar el " . FS_PEDIDO . "!";
         }
     }
     return $respuesta;
 }
 private function modificar()
 {
     $this->pedido->observaciones = $_POST['observaciones'];
     $this->pedido->numero2 = $_POST['numero2'];
     if (is_null($this->pedido->idalbaran)) {
         /// obtenemos los datos del ejercicio para acotar la fecha
         $eje0 = $this->ejercicio->get($this->pedido->codejercicio);
         if ($eje0) {
             $this->pedido->fecha = $eje0->get_best_fecha($_POST['fecha'], TRUE);
             $this->pedido->hora = $_POST['hora'];
         } else {
             $this->new_error_msg('No se encuentra el ejercicio asociado al ' . FS_PEDIDO);
         }
         /// ¿cambiamos el cliente?
         if ($_POST['cliente'] != $this->pedido->codcliente) {
             $cliente = $this->cliente->get($_POST['cliente']);
             if ($cliente) {
                 foreach ($cliente->get_direcciones() as $d) {
                     if ($d->domfacturacion) {
                         $this->pedido->codcliente = $cliente->codcliente;
                         $this->pedido->cifnif = $cliente->cifnif;
                         $this->pedido->nombrecliente = $cliente->nombrecomercial;
                         $this->pedido->apartado = $d->apartado;
                         $this->pedido->ciudad = $d->ciudad;
                         $this->pedido->coddir = $d->id;
                         $this->pedido->codpais = $d->codpais;
                         $this->pedido->codpostal = $d->codpostal;
                         $this->pedido->direccion = $d->direccion;
                         $this->pedido->provincia = $d->provincia;
                         break;
                     }
                 }
             } else {
                 die('No se ha encontrado el cliente.');
             }
         } else {
             $cliente = $this->cliente->get($this->pedido->codcliente);
         }
         $serie = $this->serie->get($this->pedido->codserie);
         /// ¿cambiamos la serie?
         if ($_POST['serie'] != $this->pedido->codserie) {
             $serie2 = $this->serie->get($_POST['serie']);
             if ($serie2) {
                 $this->pedido->codserie = $serie2->codserie;
                 $this->pedido->irpf = $serie2->irpf;
                 $this->pedido->new_codigo();
                 $serie = $serie2;
             }
         }
         if (isset($_POST['numlineas'])) {
             $numlineas = intval($_POST['numlineas']);
             $this->pedido->neto = 0;
             $this->pedido->totaliva = 0;
             $this->pedido->totalirpf = 0;
             $this->pedido->totalrecargo = 0;
             $lineas = $this->pedido->get_lineas();
             $articulo = new articulo();
             /// eliminamos las líneas que no encontremos en el $_POST
             foreach ($lineas as $l) {
                 $encontrada = FALSE;
                 for ($num = 0; $num <= $numlineas; $num++) {
                     if (isset($_POST['idlinea_' . $num])) {
                         if ($l->idlinea == intval($_POST['idlinea_' . $num])) {
                             $encontrada = TRUE;
                             break;
                         }
                     }
                 }
                 if (!$encontrada) {
                     if (!$l->delete()) {
                         $this->new_error_msg("¡Imposible eliminar la línea del artículo " . $l->referencia . "!");
                     }
                 }
             }
             /// modificamos y/o añadimos las demás líneas
             for ($num = 0; $num <= $numlineas; $num++) {
                 $encontrada = FALSE;
                 if (isset($_POST['idlinea_' . $num])) {
                     foreach ($lineas as $k => $value) {
                         /// modificamos la línea
                         if ($value->idlinea == intval($_POST['idlinea_' . $num])) {
                             $encontrada = TRUE;
                             $lineas[$k]->cantidad = floatval($_POST['cantidad_' . $num]);
                             $lineas[$k]->pvpunitario = floatval($_POST['pvp_' . $num]);
                             $lineas[$k]->dtopor = floatval($_POST['dto_' . $num]);
                             $lineas[$k]->dtolineal = 0;
                             $lineas[$k]->pvpsindto = $value->cantidad * $value->pvpunitario;
                             $lineas[$k]->pvptotal = $value->cantidad * $value->pvpunitario * (100 - $value->dtopor) / 100;
                             $lineas[$k]->descripcion = $_POST['desc_' . $num];
                             $lineas[$k]->codimpuesto = NULL;
                             $lineas[$k]->iva = 0;
                             $lineas[$k]->recargo = 0;
                             $lineas[$k]->irpf = $this->pedido->irpf;
                             if (!$serie->siniva and $cliente->regimeniva != 'Exento') {
                                 $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $num]);
                                 if ($imp0) {
                                     $lineas[$k]->codimpuesto = $imp0->codimpuesto;
                                 }
                                 $lineas[$k]->iva = floatval($_POST['iva_' . $num]);
                                 $lineas[$k]->recargo = floatval($_POST['recargo_' . $num]);
                             }
                             if ($lineas[$k]->save()) {
                                 $this->pedido->neto += $value->pvptotal;
                                 $this->pedido->totaliva += $value->pvptotal * $value->iva / 100;
                                 $this->pedido->totalirpf += $value->pvptotal * $value->irpf / 100;
                                 $this->pedido->totalrecargo += $value->pvptotal * $value->recargo / 100;
                             } else {
                                 $this->new_error_msg("¡Imposible modificar la línea del artículo " . $value->referencia . "!");
                             }
                             break;
                         }
                     }
                     /// añadimos la línea
                     if (!$encontrada and intval($_POST['idlinea_' . $num]) == -1 and isset($_POST['referencia_' . $num])) {
                         $art0 = $articulo->get($_POST['referencia_' . $num]);
                         if ($art0) {
                             $linea = new linea_pedido_cliente();
                             $linea->referencia = $art0->referencia;
                             $linea->descripcion = $_POST['desc_' . $num];
                             $linea->irpf = $this->pedido->irpf;
                             if (!$serie->siniva and $cliente->regimeniva != 'Exento') {
                                 $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $num]);
                                 if ($imp0) {
                                     $linea->codimpuesto = $imp0->codimpuesto;
                                 }
                                 $linea->iva = floatval($_POST['iva_' . $num]);
                                 $linea->recargo = floatval($_POST['recargo_' . $num]);
                             }
                             $linea->idpedido = $this->pedido->idpedido;
                             $linea->cantidad = floatval($_POST['cantidad_' . $num]);
                             $linea->pvpunitario = floatval($_POST['pvp_' . $num]);
                             $linea->dtopor = floatval($_POST['dto_' . $num]);
                             $linea->pvpsindto = $linea->cantidad * $linea->pvpunitario;
                             $linea->pvptotal = $linea->cantidad * $linea->pvpunitario * (100 - $linea->dtopor) / 100;
                             if ($linea->save()) {
                                 $this->pedido->neto += $linea->pvptotal;
                                 $this->pedido->totaliva += $linea->pvptotal * $linea->iva / 100;
                                 $this->pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100;
                                 $this->pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100;
                             } else {
                                 $this->new_error_msg("¡Imposible guardar la línea del artículo " . $linea->referencia . "!");
                             }
                         } else {
                             $this->new_error_msg("¡Artículo " . $_POST['referencia_' . $num] . " no encontrado!");
                         }
                     }
                 }
             }
             /// redondeamos
             $this->pedido->neto = round($this->pedido->neto, FS_NF0);
             $this->pedido->totaliva = round($this->pedido->totaliva, FS_NF0);
             $this->pedido->totalirpf = round($this->pedido->totalirpf, FS_NF0);
             $this->pedido->totalrecargo = round($this->pedido->totalrecargo, FS_NF0);
             $this->pedido->total = $this->pedido->neto + $this->pedido->totaliva - $this->pedido->totalirpf + $this->pedido->totalrecargo;
             if (abs(floatval($_POST['atotal']) - $this->pedido->total) > 0.01) {
                 $this->new_error_msg("El total difiere entre el controlador y la vista (" . $this->pedido->total . " frente a " . $_POST['atotal'] . "). Debes informar del error.");
             }
         }
     }
     if ($this->pedido->save()) {
         $this->new_message(ucfirst(FS_PEDIDO) . " modificado correctamente.");
         $this->new_change(ucfirst(FS_PEDIDO) . ' Cliente ' . $this->pedido->codigo, $this->pedido->url());
     } else {
         $this->new_error_msg("¡Imposible modificar el " . FS_PEDIDO . "!");
     }
 }
예제 #5
0
파일: tpvmod.php 프로젝트: ramikat/ERPSISFS
 private function nuevo_pedido_cliente()
 {
     $continuar = TRUE;
     $cliente = $this->cliente->get($_POST['cliente']);
     if ($cliente) {
         $this->save_codcliente($cliente->codcliente);
     } else {
         $this->new_error_msg('Cliente no encontrado.');
         $continuar = FALSE;
     }
     $almacen = $this->almacen->get($_POST['almacen']);
     if ($almacen) {
         $this->save_codalmacen($almacen->codalmacen);
     } else {
         $this->new_error_msg('Almacén no encontrado.');
         $continuar = FALSE;
     }
     $eje0 = new ejercicio();
     $ejercicio = $eje0->get_by_fecha($_POST['fecha']);
     if ($ejercicio) {
         $this->save_codejercicio($ejercicio->codejercicio);
     } else {
         $this->new_error_msg('Ejercicio no encontrado.');
         $continuar = FALSE;
     }
     $serie = $this->serie->get($_POST['serie']);
     if (!$serie) {
         $this->new_error_msg('Serie no encontrada.');
         $continuar = FALSE;
     }
     $forma_pago = $this->forma_pago->get($_POST['forma_pago']);
     if ($forma_pago) {
         $this->save_codpago($forma_pago->codpago);
     } else {
         $this->new_error_msg('Forma de pago no encontrada.');
         $continuar = FALSE;
     }
     $divisa = $this->divisa->get($_POST['divisa']);
     if ($divisa) {
         $this->save_coddivisa($divisa->coddivisa);
     } else {
         $this->new_error_msg('Divisa no encontrada.');
         $continuar = FALSE;
     }
     $pedido = new pedido_cliente();
     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="' . $pedido->url() . '">Pedidos</a>
            para ver si el pedido se ha guardado correctamente.');
         $continuar = FALSE;
     }
     if ($continuar) {
         $pedido->fecha = $_POST['fecha'];
         $pedido->codalmacen = $almacen->codalmacen;
         $pedido->codejercicio = $ejercicio->codejercicio;
         $pedido->codserie = $serie->codserie;
         $pedido->codpago = $forma_pago->codpago;
         $pedido->coddivisa = $divisa->coddivisa;
         $pedido->tasaconv = $divisa->tasaconv;
         $pedido->codagente = $this->agente->codagente;
         $pedido->observaciones = $_POST['observaciones'];
         $pedido->numero2 = $_POST['numero2'];
         $pedido->irpf = $serie->irpf;
         $pedido->porcomision = $this->agente->porcomision;
         foreach ($cliente->get_direcciones() as $d) {
             if ($d->domfacturacion) {
                 $pedido->codcliente = $cliente->codcliente;
                 $pedido->cifnif = $cliente->cifnif;
                 $pedido->nombrecliente = $cliente->nombrecomercial;
                 $pedido->apartado = $d->apartado;
                 $pedido->ciudad = $d->ciudad;
                 $pedido->coddir = $d->id;
                 $pedido->codpais = $d->codpais;
                 $pedido->codpostal = $d->codpostal;
                 $pedido->direccion = $d->direccion;
                 $pedido->provincia = $d->provincia;
                 break;
             }
         }
         if (is_null($pedido->codcliente)) {
             $this->new_error_msg("No hay ninguna dirección asociada al cliente.");
         } else {
             if ($pedido->save()) {
                 $art0 = new articulo();
                 $n = floatval($_POST['numlineas']);
                 for ($i = 0; $i <= $n; $i++) {
                     if (isset($_POST['referencia_' . $i])) {
                         $articulo = $art0->get($_POST['referencia_' . $i]);
                         if ($articulo) {
                             $linea = new linea_pedido_cliente();
                             $linea->idpedido = $pedido->idpedido;
                             $linea->referencia = $articulo->referencia;
                             $linea->descripcion = $_POST['desc_' . $i];
                             if (!$serie->siniva and $cliente->regimeniva != 'Exento') {
                                 $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $i]);
                                 if ($imp0) {
                                     $linea->codimpuesto = $imp0->codimpuesto;
                                     $linea->iva = floatval($_POST['iva_' . $i]);
                                     $linea->recargo = floatval($_POST['recargo_' . $i]);
                                 } else {
                                     $linea->iva = floatval($_POST['iva_' . $i]);
                                     $linea->recargo = floatval($_POST['recargo_' . $i]);
                                 }
                             }
                             if ($linea->iva > 0) {
                                 $linea->irpf = $pedido->irpf;
                             }
                             //corregido de lo pasado en ventas
                             $linea->pvpunitario = floatval($_POST['pvp_' . $i]);
                             $linea->cantidad = floatval($_POST['cantidad_' . $i]);
                             //$linea->dtopor = floatval($_POST['dto_'.$i]);
                             $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad;
                             $linea->pvptotal = floatval($_POST['neto_' . $i]);
                             if ($linea->save()) {
                                 $pedido->neto += $linea->pvptotal;
                                 $pedido->totaliva += $linea->pvptotal * $linea->iva / 100;
                                 $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100;
                                 $pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100;
                             } else {
                                 $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia);
                                 $continuar = FALSE;
                             }
                         } else {
                             $this->new_error_msg("Artículo no encontrado: " . $_POST['referencia_' . $i]);
                             $continuar = FALSE;
                         }
                     }
                 }
                 if ($continuar) {
                     /// redondeamos
                     $pedido->neto = round($pedido->neto, FS_NF0);
                     $pedido->totaliva = round($pedido->totaliva, FS_NF0);
                     $pedido->totalirpf = round($pedido->totalirpf, FS_NF0);
                     $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0);
                     $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo;
                     if ($pedido->save()) {
                         $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . "</a> guardado correctamente. <a href='index.php?page=imprimir_presu_pedi&pedido=TRUE&id=" . $pedido->idpedido . "'>Imprimir</a>");
                         $this->new_change(ucfirst(FS_PEDIDO) . " a Cliente " . $pedido->codigo, $pedido->url(), TRUE);
                     } else {
                         $this->new_error_msg("¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!");
                     }
                 } else {
                     if ($pedido->delete()) {
                         $this->new_message(ucfirst(FS_PEDIDO) . " eliminado correctamente.");
                     } else {
                         $this->new_error_msg("¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!");
                     }
                 }
             } else {
                 $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!");
             }
         }
     }
 }