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 . "!"); } } }
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 . "!"); } } } }
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 . "!"); } }
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 . "!"); } } } }