public function __construct($request) { if ($request['filter']['valuesSelected']['0'] == '') { $idSucursal = $_SESSION['suc']; } else { $idSucursal = $request['filter']['valuesSelected']['0']; } $tpv = new Tpvs(); $tpvs = $tpv->fetchAll($idSucursal); $tpvs[] = array('Id' => '%', 'Value' => '** Todos **'); $this->values['tpvs'] = $tpvs; unset($tpv); // Sucursales destino para el traspaso $sucursal = new Sucursales(); $sucursales = $sucursal->getSucursalesUsuario($_SESSION['usuarioPortal']['Id'], false); $this->values['sucursalesDestino'] = $sucursales; // Cerrar las eventuales cajas abiertas de dias anterios $arqueo = new CajaArqueos(); $arqueosAbiertos = $arqueo->getArqueosAbiertos('%', '%'); foreach ($arqueosAbiertos as $arqueoAbierto) { $arqueo = new CajaArqueos($arqueoAbierto['IDArqueo']); if ($arqueo->cierra()) { $this->values['alertas'][] = "Se ha cerrado el arquero '{$arqueo->getIDTpv()->getNombre()}' del día {$arqueo->getDia()}"; } } unset($arqueo); parent::__construct($request); }
/** * Remove the specified resource from storage. */ public function destroy(Sucursales $sucursales) { if ($sucursales->delete(['id'])) { return Redirect::back()->with('msg', 'Sucursal eliminada con éxito.')->with('class', 'success'); } else { return Redirect::back()->with('msg', '¡Algo salió mal! La sucursal no pudo ser eliminada.')->with('class', 'error'); } }
/** * Devuelve un array con los tpvs definidos para la sucursal $idSucursal * * Si no se indica la sucursal, se toma la sucursal en curso * * @param integer $idSucursal El id de sucursal (opcional) * @return array Array de Tpvs */ public function getTpvsSucursal($idSucursal = '') { if ($idSucursal == '') { $idSucursal = $_SESSION['suc']; } $sucursal = new Sucursales($idSucursal); $rows = $sucursal->getTpvs(); unset($sucursal); $rows[] = array('Id' => '%', 'Value' => '* Todos'); return $rows; }
public function getEdit(Pedidos $pedidos) { $platillos = Platillos::all(); $listaplatillos = Pedidosplat::where('id_pedido', '=', $pedidos->id)->get(); $sucursales = Sucursales::all(); return View::make('dashboard/pedidos/edit', compact('pedidos', 'platillos', 'listaplatillos', 'sucursales')); }
/** * Devuelve un array con todas las sucursales de la empresa indicada * a las que tiene acceso el usuario logeado. * * Si no se indica empresa, se toma la actual: $_SESSION['emp'] * * Si el usuario puede acceder a todas las sucursales y se activa a TRUE * el parámetro $opcionTodas, se añade un valor más en el array * con la opcion '** Todas **' * * @param integer $idEmpresa * @param boolean $opcionTodas * @return array */ public function getSucursales($idEmpresa = '', $opcionTodas = TRUE) { if ($idEmpresa == '') { $idEmpresa = $_SESSION['emp']; } if ($this->IDSucursal < 1) { //Puede acceder a todas $sucursal = new Sucursales(); $sucursales = $sucursal->cargaCondicion("IDSucursal as Id, Nombre as Value"); if ($opcionTodas) { $sucursales[] = array('Id' => '', 'Value' => '** Todas **'); } unset($sucursal); } else { //Puede acceder solo a una $sucursal = $this->getIDSucursal(); $sucursales[] = array('Id' => $sucursal->getIDSucursal(), 'Value' => $sucursal->getNombre()); } return $sucursales; }
function Header() { $empresa = new PcaeEmpresas($_SESSION['emp']); $sucursal = new Sucursales($_SESSION['suc']); $logo = $empresa->getLogo(); if (file_exists($logo)) { $this->Image($empresa->getLogo(), 10, 8, 23); } $this->SetFont('Arial', 'B', 12); $this->Cell(0, 5, $empresa->getRazonSocial(), 0, 1, "R"); $this->SetFont('Arial', '', 8); $this->Cell(0, 5, $sucursal->getNombre(), 0, 1, "R"); $this->SetFont('Arial', 'B', 11); $this->Cell(0, 5, $this->opciones['title'], 0, 1, "C"); $this->Ln(5); $this->SetFont('Courier', 'B', 8); //PINTAR LOS TITULOS DE LAS COLUMNAS $this->Cell(10, 4, "Hora", 0, 0, "C"); $this->Cell(100, 4, "Cliente", 0, 0, "C"); $this->Cell(20, 4, "Poblacion", 0, 0, "C"); $this->Cell(45, 4, "Telefonos", 0, 0, "C"); $this->Cell(10, 4, "Riesgo", 0, 0, "C"); $this->Cell(0, 4, "Comentarios", 0, 0, "C"); $this->Ln(); }
/** * Construye un tag html <select> con todas las sucursales de una empresa dada. * @param integer $idEmpresa ID de la empresa * @return string Codigo html con el tag select */ function sucursalesEmpresa($idEmpresa) { $sucursal = new Sucursales(); $rows = $sucursal->fetchAll($idEmpresa); unset($sucursal); $ch = "<div class='Etiqueta'>Sucursal</div>"; $ch .= "<select name='" . $_GET['nameselect'] . "' id='" . $_GET['idselect'] . "' class='Select'>"; foreach ($rows as $row) { $ch .= "<option value='" . $row['Id'] . "'>" . $row['Value'] . "</option>"; } $ch .= "</select>"; return $ch; }
function Header() { $empresa = new PcaeEmpresas($_SESSION['emp']); $sucursal = new Sucursales($_SESSION['suc']); $this->Image($empresa->getLogo(), 10, 8, 23); $this->SetFont('Arial', 'B', 12); $this->Cell(0, 5, $empresa->getRazonSocial(), 0, 1, "R"); $this->SetFont('Arial', '', 8); $this->Cell(0, 5, $sucursal->getNombre(), 0, 1, "R"); $this->SetFont('Arial', 'B', 12); $this->Cell(0, 5, $this->opciones['title'], 0, 1, "C"); // Pintar la leyenda del filtro en la primera pagina if ($this->page == 1) { $this->Ln(5); $this->SetFont('Arial', '', '8'); foreach ($this->opciones['leyendaFiltro'] as $filtro) { $this->Cell(25, 4, $filtro['Column'], 0, 0); $this->Cell(0, 4, $filtro['Value'], 0, 1); } } // Para los títulos pongo el mismo font que para el cuerpo del listado $this->Ln(5); $this->SetFont($this->opciones['titleFont'][0], $this->opciones['titleFont'][1], $this->opciones['titleFont'][2]); //PINTAR LOS TITULOS DE LAS COLUMNAS foreach ($this->opciones['columns'] as $value) { $caracteres = (int) $value['length']; $texto = trim((string) $value['title']); $ancho = $this->getStringWidth(str_pad(" ", $caracteres)) + 1; $this->Cell($ancho, 4, $this->DecodificaTexto($texto, $caracteres), 0, 0, "C", 1); } $this->Ln(); //$this->Line($this->GetX(), $this->GetY(), $this->GetX() + 190, $this->GetY()); }
/** * Carga facturas recibidas desde un archivo de texto externo * Las columnas deben venir separadas por tabuladores * Las facturas se cargan en la sucursal en curso * * @param string $fileName El path completo del archivo a importar * @return array */ public function ImportarAction($fileName = '') { if ($this->values['permisos']['permisosModulo']['IN']) { if ($fileName == '') { $fileName = $this->request[2]; } if ($fileName != '') { $fileName = "docs/docs{$_SESSION['emp']}/tmp/" . $fileName; } $archivo = new Archivo($fileName); if ($archivo->open("r")) { set_time_limit(0); // Lee contador $contador = new Contadores(); $contador = $contador->dameContador($_SESSION['suc'], 4); $idContador = $contador->getIDContador(); // Buscar la cuenta contable de compras para la sucursal $sucursal = new Sucursales($_SESSION['suc']); $ctaCompras = $sucursal->getCtaContableCompras(); unset($sucursal); while (($linea = $archivo->readLine()) !== FALSE) { $fecha = explode("-", $linea[1]); $proveedor = new Proveedores(); $proveedor = $proveedor->find('CContable', $linea[2]); if ($proveedor->getIDProveedor() != '') { $b1 = $linea[5]; $i1 = $linea[6]; $ci1 = round($b1 * $i1 / 100, 2); $r1 = $linea[7]; $cr1 = round($b1 * $r1 / 100, 2); $b2 = $linea[8]; $i2 = $linea[9]; $ci2 = round($b2 * $i2 / 100, 2); $r2 = $linea[10]; $cr2 = round($b2 * $r2 / 100, 2); $factura = new FrecibidasCab(); $factura->setIDContador($idContador); $factura->setIDSucursal($_SESSION['suc']); $factura->setNumeroFactura($contador->asignaContador()); $factura->setSuFactura($linea[0]); $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]); $factura->setIDProveedor($proveedor->getIDProveedor()); $factura->setImporte($b1 + $b2); $factura->setBaseImponible1($b1); $factura->setIva1($i1); $factura->setCuotaIva1($ci1); $factura->setRecargo1($r1); $factura->setCuotaRecargo1($cr1); $factura->setBaseImponible2($b2); $factura->setIva2($i2); $factura->setCuotaIva2($ci2); $factura->setRecargo2($r2); $factura->setCuotaRecargo2($cr2); $factura->setTotalBases($b1 + $b2); $factura->setTotalIva($ci1 + $ci2); $factura->setTotalRecargo($cr1 + $cr2); $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2); $factura->setIDFP(1); $factura->setAsiento(9999); $factura->setCuentaCompras($ctaCompras); if ($factura->create()) { $factura->creaVctos(); } else { $this->values['errores'][] = $factura->getErrores(); } //print_r($factura->getErrores()); } else { $this->values['errores'][] = "No existe el proveedor " . $linea[2] . " " . $linea[4] . ". No se carga la factura " . $linea[0]; } } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } unset($archivo); return array('template' => $this->entity . '/edit.html.twig', 'values' => $this->values); } else { return array('template' => '_global/forbiden.html.twig'); } }
$getter->registrar_sucursal($sucursal); break; case '4': /*Obtiene las sucursales más cercanas segun unas coordenadas y un radio otorgado*/ if (!isset($_REQUEST['lat']) || !isset($_REQUEST['lon'])) { $datos['success'] = 0; echo json_encode($datos); exit; } else { if ($_REQUEST['lat'] == '' || $_REQUEST['lon'] == '' || $_REQUEST['lat'] == 0 || $_REQUEST['lon'] == 0) { $datos['success'] = 0; echo json_encode($datos); exit; } require 'sucursal.model.php'; $getter = new Sucursales(); $getter->set_host(1); $latitud = $getter->limpiar_variable($_REQUEST['lat']); $longitud = $getter->limpiar_variable($_REQUEST['lon']); if ($latitud == undefined || $latitud == null || $longitud == undefined || $longitud == null) { $latitud = -33.437924; $longitud = -70.650485; } if (isset($_REQUEST['rad'])) { $radio = $getter->limpiar_variable($_REQUEST['rad']); } else { $radio = 0; } if (isset($_REQUEST['lim'])) { $limite = $getter->limpiar_variable($_REQUEST['lim']); } else {
/** * Facturar el pedido * Según la forma de pago, se actualiza la cartera de efectos. * Recibe el objeto contador que se utilizará para obtener el nº de factura. * * @param Contadores $contador El objeto contador * @param date $fecha La fecha de la factura (opcional, toma la del sistema) * @param string $suFactura El numero de factura del proveedor (opcional) * @param integer $idFp El id de la forma de pago (opcional) * @return int El id de la factura generada */ public function facturar(Contadores $contador, $fecha = '', $suFactura = '', $idFp = '') { if ($fecha == '') { $fecha = date('d-m-Y'); } $idFactura = 0; if ($this->getIDEstado()->getIDTipo() == 2 and $this->getIDFactura()->getIDFactura() == 0) { // Buscar la cuenta contable de compras para la sucursal $sucursal = new Sucursales($this->IDSucursal); $ctaCompras = $sucursal->getCtaContableCompras(); unset($sucursal); // Lee contador $idContador = $contador->getIDContador(); $numeroFactura = $contador->asignaContador(); unset($contador); // Crear la cabecera de la factura $factura = new FrecibidasCab(); $factura->setIDSucursal($this->IDSucursal); $factura->setIDContador($idContador); $factura->setNumeroFactura($numeroFactura); $factura->setSuFactura($suFactura); $factura->setFecha($fecha); $factura->setIDProveedor($this->IDProveedor); $factura->setImporte($this->Importe); $factura->setDescuento($this->Descuento); $factura->setBaseImponible1($this->BaseImponible1); $factura->setIva1($this->Iva1); $factura->setCuotaIva1($this->CuotaIva1); $factura->setRecargo1($this->Recargo1); $factura->setCuotaRecargo1($this->CuotaRecargo1); $factura->setBaseImponible2($this->BaseImponible2); $factura->setIva2($this->Iva2); $factura->setCuotaIva2($this->CuotaIva2); $factura->setRecargo2($this->Recargo2); $factura->setCuotaRecargo2($this->CuotaRecargo2); $factura->setBaseImponible3($this->BaseImponible3); $factura->setIva3($this->Iva3); $factura->setCuotaIva3($this->CuotaIva3); $factura->setRecargo3($this->Recargo3); $factura->setCuotaRecargo3($this->CuotaRecargo3); $factura->setTotalBases($this->TotalBases); $factura->setTotalIva($this->TotalIva); $factura->setTotalRecargo($this->TotalRecargo); $factura->setTotal($this->Total); $factura->setReferencia($this->Referencia); $factura->setCuentaCompras($ctaCompras); if ($idFp == '') { $factura->setIDFP($this->IDFP); } else { $factura->setIDFP($idFp); } $idFactura = $factura->create(); if ($idFactura != 0) { // Crear las lineas de factura $linPedido = new PedidosLineas(); $rows = $linPedido->cargaCondicion("*", "IDPedido='{$this->IDPedido}'", "IDLinea ASC"); unset($linPedido); foreach ($rows as $row) { $importe = $row['UnidadesRecibidas'] * $row['Precio'] * (1 - $row['Descuento'] / 100); $linFactura = new FrecibidasLineas(); $linFactura->setIDFactura($idFactura); $linFactura->setIDArticulo($row['IDArticulo']); $linFactura->setDescripcion($row['Descripcion']); $linFactura->setUnidades($row['UnidadesRecibidas']); $linFactura->setPrecio($row['Precio']); $linFactura->setDescuento($row['Descuento']); $linFactura->setImporte($importe); $linFactura->setIDPedido($row['IDPedido']); $linFactura->setIDLineaPedido($row['IDLinea']); $linFactura->setIva($row['Iva']); if ($linFactura->create()) { // Pongo el estado de la linea de pedido a "Facturado" $lineaPedido = new PedidosLineas($row['IDLinea']); $lineaPedido->setIDEstado(3); $lineaPedido->setUnidadesPtesFacturar(0); $lineaPedido->save(); unset($lineaPedido); } unset($linFactura); } // Recalcula la factura: // puede que las cantidades facturas sean distintas a las pedidas $factura->recalcula(); // Crear vencimientos $factura->creaVctos(); // Anotar en caja si procede $factura->anotaEnCaja(); // Actualiza la cabecera del pedido $this->setIDFactura($idFactura); $this->setIDEstado(3); $this->save(); } unset($factura); } return $idFactura; }
public function xxgetShowexcel(Orden $orden) { $ordenpedido = Ordenpedido::where('id_orden', '=', $orden->id)->get(); $a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $f = 0; foreach ($ordenpedido as $ord) { $orde[$a] = $ord; foreach (Pedidos::where('id', '=', $ord->id_pedido)->get() as $ped) { $pedido[$b] = $ped->sucursal; foreach (Pedidosplat::where('id_pedido', '=', $ped->id)->get() as $pedplat) { $pedidosplatillos[$c] = $pedplat; foreach (Platillos::where('id', '=', $pedplat->id_platillo)->get() as $plat) { $plats[$d] = $plat; foreach (PlatillosMp::where('platillos_id', '=', $plat->id)->get() as $platmp) { $platsmp[$e] = $platmp; foreach (Materias::where('id', '=', $platmp->materia_prima)->get() as $materia) { $materias[$f] = $materia->id; $f++; } $e++; } $d++; } $c++; } $b++; } $a++; } $materiasall = Materias::whereIn('id', $materias)->get(); $sucursales = Sucursales::whereIn('id', $pedido)->get(); return view::make('pruebas.excelprueba', ['orden' => $orden, 'ordenpedido' => $ordenpedido, 'materiasall' => $materiasall, 'orde' => $orde, 'pedido' => $pedido, 'pedidosplatillos' => $pedidosplatillos, 'plats' => $plats, 'platsmp' => $platsmp, 'sucursales' => $sucursales]); }
public function getShowexcel(Orden $orden) { $excel = App::make('excel'); Excel::create('orden-' . $orden->id, function ($excel) use($orden) { $excel->sheet('First sheet', function ($sheet) use($orden) { $ordenpedido = Ordenpedido::where('id_orden', '=', $orden->id)->get(); $a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $f = 0; foreach ($ordenpedido as $ord) { $orde[$a] = $ord; foreach (Pedidos::where('id', '=', $ord->id_pedido)->get() as $ped) { $pedido[$b] = $ped->sucursal; foreach (Pedidosplat::where('id_pedido', '=', $ped->id)->get() as $pedplat) { $pedidosplatillos[$c] = $pedplat; foreach (Platillos::where('id', '=', $pedplat->id_platillo)->get() as $plat) { $plats[$d] = $plat; foreach (PlatillosMp::where('platillos_id', '=', $plat->id)->get() as $platmp) { $platsmp[$e] = $platmp; foreach (Materias::where('id', '=', $platmp->materia_prima)->get() as $materia) { $materias[$f] = $materia->id; $f++; } $e++; } $d++; } $c++; } $b++; } $a++; } $materiasall = Materias::whereIn('id', $materias)->get(); $sucursales = Sucursales::whereIn('id', $pedido)->get(); //variables para orden general $total_g = 0; $total_gen[] = 0; $cant_gen = 0; $sobrante_gen = 0; $ordenpedido = Ordenpedido::where('id_orden', '=', $orden->id)->get(); $a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $f = 0; //para compra general foreach ($materiasall as $mat) { foreach ($ordenpedido as $ord) { $orde1[$a] = $ord; foreach (Pedidos::where('id', '=', $ord->id_pedido)->get() as $ped) { $pedido1[$b] = $ped->sucursal; foreach (Pedidosplat::where('id_pedido', '=', $ped->id)->get() as $pedplat) { $pedidosplatillos1[$c] = $pedplat; foreach (Platillos::where('id', '=', $pedplat->id_platillo)->get() as $plat) { $plats1[$d] = $plat; foreach (PlatillosMp::where('platillos_id', '=', $plat->id)->get() as $platmp) { $platsmp1[$e] = $platmp; if ($mat->id == $platmp->materia_prima) { $total_g = $total_g + $platmp->cantidad_mp * $pedplat->cantidad; } $e++; } $d++; } $c++; } $b++; } $a++; } $total_general[$f] = $total_g . ' ' . $mat->Unidades->nombre; $f++; } $sheet->loadView('dashboard.orden.showexcel', ['orden' => $orden, 'ordenpedido' => $ordenpedido, 'materiasall' => $materiasall, 'orde' => $orde, 'pedido' => $pedido, 'total_general' => $total_general, 'pedidosplatillos' => $pedidosplatillos, 'plats' => $plats, 'platsmp' => $platsmp, 'sucursales' => $sucursales]); }); })->download('xls'); }
function Header() { $empresa = new PcaeEmpresas($_SESSION['emp']); $sucursal = new Sucursales($_SESSION['suc']); $this->Image($empresa->getLogo(), 10, 8, 23); $this->SetFont('Arial', 'B', 12); $this->Cell(0, 5, $empresa->getRazonSocial(), 0, 1, "R"); $this->SetFont('Arial', '', 8); $this->Cell(0, 5, $sucursal->getNombre(), 0, 1, "R"); $this->SetFont('Arial', 'B', 12); $this->Cell(0, 5, "ORDEN DE REPARTO " . $this->opciones['almacen'] . " " . $this->opciones['dia'] . " Ruta: " . $this->opciones['ruta'], 0, 1, "C"); $this->SetFont('Arial', 'B', 9); $this->Cell(15, 4, "Orden", 1, 0, "C"); $this->Cell(15, 4, "Hora", 1, 0, "C"); $this->Cell(150, 4, "Cliente / Direccion", 1, 0, "C"); $this->Cell(50, 4, "Comercial", 1, 0, "C"); $this->Cell(50, 4, "Observaciones", 1, 0, "C"); $this->Ln(); $this->SetFont('Arial', '', 8); }
/** * Carga facturas emitidas desde un archivo de texto externo * Las columnas deben venir separadas por tabuladores * Las facturas se cargan en la sucursal en curso * * @param string $fileName El path completo del archivo a importar */ private function importarArchivo($fileName) { $archivo = new Archivo($fileName); if ($archivo->open("r")) { set_time_limit(0); // Lee contador $contador = new Contadores(); $contador = $contador->dameContador($_SESSION['suc'], 2); $idContador = $contador->getIDContador(); // Buscar la cuenta contable de ventas para la sucursal $sucursal = new Sucursales($_SESSION['suc']); $ctaVentas = $sucursal->getCtaContableVentas(); unset($sucursal); while (($linea = $archivo->readLine()) !== FALSE) { $fecha = explode("-", $linea[2]); $cliente = new Clientes(); $cliente = $cliente->find('CContable', $linea[3]); if ($cliente->getIDCliente() != '') { // Pongo los valores a cero en caso de que no venga nada for ($i = 6; $i <= 11; $i++) { if ($linea[$i] == '') { $linea[$i] = 0; } } $b1 = $linea[6]; $i1 = $linea[7]; $ci1 = round($b1 * $i1 / 100, 2); $r1 = $linea[8]; $cr1 = round($b1 * $r1 / 100, 2); $b2 = $linea[9]; $i2 = $linea[10]; $ci2 = round($b2 * $i2 / 100, 2); $r2 = $linea[11]; $cr2 = round($b2 * $r2 / 100, 2); $factura = new FemitidasCab(); $factura->setIDContador($idContador); if ($this->request['RespectarNumerosFactura'] == 'on') { $numeroFactura = $contador->getSerie() . (1200000 + $linea[1]); } else { $numeroFactura = $contador->asignaContador(); } $factura->setNumeroFactura($numeroFactura); $factura->setIDSucursal($_SESSION['suc']); $factura->setIDAgente($_SESSION['usuarioPortal']['Id']); $factura->setIDComercial(1); $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]); $factura->setIDCliente($cliente->getIDCliente()); $factura->setImporte($b1 + $b2); $factura->setBaseImponible1($b1); $factura->setIva1($i1); $factura->setCuotaIva1($ci1); $factura->setRecargo1($r1); $factura->setCuotaRecargo1($cr1); $factura->setBaseImponible2($b2); $factura->setIva2($i2); $factura->setCuotaIva2($ci2); $factura->setRecargo2($r2); $factura->setCuotaRecargo2($cr2); $factura->setTotalBases($b1 + $b2); $factura->setTotalIva($ci1 + $ci2); $factura->setTotalRecargo($cr1 + $cr2); $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2); $factura->setIDFP($this->request['IDFP']); $factura->setAsiento(9999); $factura->setCuentaVentas($ctaVentas); if ($factura->create()) { $factura->creaVctos(); } else { $this->values['errores'] = $factura->getErrores(); } } else { $this->values['errores'][] = "No existe el cliente " . $linea[3] . " " . $linea[5] . ". No se carga la factura " . $linea[1]; } } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } unset($archivo); }
/** * Proceso de facturacion. * Puede ser facturación separada: Una factura por cada albarán * o facturación agrupada: Una factura con todos los albaranes, con las siguientes salvedades: * * Se agrupan las facturas en base a la forma de pago, comercial y al flag "Facturación agrupada" * de la ficha del cliente. * * @return <type> */ public function facturarAction() { $facturados = array(); $filtro = $this->request['filtro']; $fecha = new Fecha($filtro['desdeFecha']); $desdeFecha = $fecha->getaaaammdd(); $fecha = new Fecha($filtro['hastaFecha']); $hastaFecha = $fecha->getaaaammdd(); unset($fecha); switch ($this->request['tipo']) { case '0': // Facturación individual. Se genera una factura por cada albarán $filter = "IDFactura='0' and IDEstado='2' and IDCliente='{$filtro['idCliente']}' and FechaEntrega>='{$desdeFecha}' and FechaEntrega<'{$hastaFecha}' and FlagFacturar='1'"; $albaran = new AlbaranesCab(); $rows = $albaran->cargaCondicion("IDAlbaran", $filter, "FechaEntrega ASC"); foreach ($rows as $row) { $albaran = new AlbaranesCab($row['IDAlbaran']); $idFactura = $albaran->facturar(new Contadores($this->request['idContador']), $this->request['fecha']); if (count($albaran->getErrores()) != 0) { $this->values['errores'] = $albaran->getErrores(); break; } else { $facturados[] = $idFactura; } } unset($albaran); break; case '1': // Agrupada. Se agrupan los albaranes por forma de pago, comercial $filter = "c.IDFactura='0' and c.IDEstado='2' and c.IDCliente='{$filtro['idCliente']}' and c.FechaEntrega>='{$desdeFecha}' and c.FechaEntrega<'{$hastaFecha}' and c.FlagFacturar='1'"; //COMPRUEBO QUE NO HAYA MAS DE TRES TIPOS DE IVA ENTRE TODOS LOS ALBARANES A FACTURAR $albaran = new AlbaranesCab(); $albaranTabla = $albaran->getDataBaseName() . "." . $albaran->getTableName(); $lineas = new AlbaranesLineas(); $lineasTabla = $lineas->getDataBaseName() . "." . $lineas->getTableName(); $em = new EntityManager($albaran->getConectionName()); if (!$em->getDbLink()) { $this->values['errores'] = $em->getError(); return $this->listAction(); } $query = "select l.Iva from {$lineasTabla} as l, {$albaranTabla} as c\n where {$filter} and c.IDAlbaran=l.IDAlbaran\n group by l.Iva"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); if (count($rows) > 3) { $this->values['alertas'] = "Hay más de tres tipos de iva distintos. No se puede agrupar"; return $this->listAction(); } $contador = new Contadores($this->request['idContador']); // Buscar la cuenta contable de ventas para la sucursal $sucursal = new Sucursales($filtro['idSucursal']); $ctaVentas = $sucursal->getCtaContableVentas(); unset($sucursal); $cliente = new Clientes($filtro['idCliente']); $agruparDireccionEntrega = $cliente->getFacturacionAgrupada()->getIDTipo() == '1'; unset($cliente); $query = $agruparDireccionEntrega ? "select c.IDFP,c.IDComercial, sum(c.Importe) as Importe, sum(Descuento) as Descuento from {$albaranTabla} c where {$filter} GROUP BY c.IDFP, c.IDComercial;" : "select c.IDFP,c.IDComercial, c.IDDirec, sum(c.Importe) as Importe, sum(Descuento) as Descuento from {$albaranTabla} c where {$filter} GROUP BY c.IDFP, c.IDComercial, c.IDDirec;"; unset($cliente); //AGRUPO LOS ALBARANES POR FORMA DE PAGO, COMERCIAL Y (si procede) DIRECCION DE ENTREGA. $em = new EntityManager($albaran->getConectionName()); $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); foreach ($rows as $row) { $numeroFactura = $contador->asignaContador(); $factura = new FemitidasCab(); $factura->setIDSucursal($filtro['idSucursal']); $factura->setIDContador($this->request['idContador']); $factura->setNumeroFactura($numeroFactura); $factura->setIDAgente($_SESSION['usuarioPortal']['Id']); $factura->setIDComercial($row['IDComercial']); $factura->setFecha($this->request['fecha']); $factura->setIDCliente($filtro['idCliente']); $factura->setCuentaVentas($ctaVentas); $factura->setDescuento($row['Descuento']); $factura->setImporte($row['Importe']); $factura->setIDFP($row['IDFP']); $idFactura = $factura->create(); // Guardo en un array los id's de facturas generadas $facturados[] = $idFactura; if ($idFactura != 0) { // Crear las lineas de factura // No incluyo las lineas de albaran cuyas unidades sean 0 $em = new EntityManager($albaran->getConectionName()); $query = $agruparDireccionEntrega ? "select l.* from {$lineasTabla} l, {$albaranTabla} c where (c.IDAlbaran=l.IDAlbaran) and (c.IDFP='{$row['IDFP']}') and (l.Unidades<>0) and {$filter}" : "select l.* from {$lineasTabla} l, {$albaranTabla} c where (c.IDAlbaran=l.IDAlbaran) and (c.IDFP='{$row['IDFP']}') and (c.IDDirec='{$row['IDDirec']}') and (l.Unidades<>0) and {$filter}"; $em->query($query); $lineas = $em->fetchResult(); $em->desConecta(); foreach ($lineas as $linea) { $linFactura = new FemitidasLineas(); $linFactura->setIDFactura($idFactura); $linFactura->setIDArticulo($linea['IDArticulo']); $linFactura->setDescripcion($linea['Descripcion']); $linFactura->setUnidades($linea['Unidades']); $linFactura->setPrecio($linea['Precio']); $linFactura->setDescuento($linea['Descuento']); $linFactura->setImporte($linea['Importe']); $linFactura->setImporteCosto($linea['ImporteCosto']); $linFactura->setIDAlbaran($linea['IDAlbaran']); $linFactura->setIDLineaAlbaran($linea['IDLinea']); $linFactura->setIva($linea['Iva']); $linFactura->setRecargo($linea['Recargo']); $linFactura->setIDVenta($linea['IDVenta']); $linFactura->setComisionAgente($linea['ComisionAgente']); $linFactura->setComisionMontador($linea['ComisionMontador']); $linFactura->setComisionar($linea['Comisionar']); $linFactura->setIDAgente($_SESSION['usuarioPortal']['Id']); $linFactura->setIDComercial($linea['IDComercial']); $linFactura->setIDPromocion($linea['IDPromocion']); $linFactura->setAltoAl($linea['AltoAl']); $linFactura->setAnchoAl($linea['AnchoAl']); $linFactura->setMtsAl($linea['MtsAl']); $linFactura->setAltoFa($linea['AltoFa']); $linFactura->setAnchoFa($linea['AnchoFa']); $linFactura->setMtsFa($linea['MtsFa']); if ($linFactura->create()) { // Pongo el estado de la linea de albaran a "Facturado" $lineaAlbaran = new AlbaranesLineas($linea['IDLinea']); $lineaAlbaran->setIDEstado(3); $lineaAlbaran->save(); } else { print_r($linFactura->getErrores()); } unset($linFactura); } // Totalizar la factura $factura->recalcula(); // Crear vencimientos $factura->creaVctos(); // Anotar en caja sin procede $factura->anotaEnCaja(); // Actualiza las cabecera del grupo de albaranes $em = new EntityManager($albaran->getConectionName()); $query = $agruparDireccionEntrega ? "update {$albaranTabla} c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and ({$filter})" : "update {$albaranTabla} c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and (c.IDDirec='{$row['IDDirec']}') and ({$filter})"; $em->query($query); $em->desConecta(); unset($factura); } else { $this->values['errores'] = $factura->getErrores(); } } break; } if ($this->request['imprimir'] == 'on' and count($facturados) > 0) { $this->values['archivo'] = $this->generaPdf('FemitidasCab', $facturados); } if (count($facturados) > 0) { $this->values['alertas'][] = "Se han generado las siguientes facturas:"; foreach ($facturados as $item) { $this->values['alertas'][] = $item; } } return $this->listAction(); }
/** * Proceso de facturación agrupada. * * Se pueden agrupar pedidos de distintas sucursales, en cuyo caso * la factura generada se asignará a la sucursal en curso. * * Se agrupan las facturas en base a la forma de pago. * * @return <type> */ public function ConformarAction() { $facturados = array(); $filtro = $this->request['filtro']; $fecha = new Fecha($filtro['desdeFecha']); $desdeFecha = $fecha->getaaaammdd(); $fecha = new Fecha($filtro['hastaFecha']); $hastaFecha = $fecha->getaaaammdd(); unset($fecha); if ($filtro['idSucursal'] == '') { $filterSucursal = "(1)"; $idSucursal = $_SESSION['suc']; } else { $filterSucursal = "(IDSucursal='{$filtro['idSucursal']}')"; $idSucursal = $filtro['idSucursal']; } $filter = $filterSucursal . " AND c.IDFactura='0' and c.IDEstado='2' and c.IDProveedor='{$filtro['idProveedor']}' and c.Fecha>='{$desdeFecha}' and c.Fecha<'{$hastaFecha}' and c.FlagFacturar='1'"; //COMPRUEBO QUE NO HAYA MAS DE TRES TIPOS DE IVA ENTRE TODOS LOS ALBARANES A FACTURAR $pedidos = new PedidosCab(); $em = new EntityManager($pedidos->getConectionName()); if (!$em->getDbLink()) { $this->values['errores'] = $em->getError(); return $this->listAction(); } $query = "SELECT l.Iva\n FROM\n {$em->getDataBase()}.ErpPedidosLineas as l,\n {$em->getDataBase()}.ErpPedidosCab as c\n WHERE {$filter} and c.IDPedido=l.IDPedido\n GROUP BY l.Iva"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); if (count($rows) > 3) { $this->values['alertas'] = "Hay más de tres tipos de iva distintos. No se puede agrupar"; return $this->listAction(); } $contador = new Contadores($this->request['idContador']); // Buscar la cuenta contable de compras para la sucursal $sucursal = new Sucursales($idSucursal); $ctaCompras = $sucursal->getCtaContableCompras(); unset($sucursal); //AGRUPO LOS PEDIDOS POR FORMA DE PAGO. $em = new EntityManager($pedidos->getConectionName()); $query = "SELECT c.IDFP, sum(c.Total) as Total FROM {$pedidos->getDataBaseName()}.ErpPedidosCab as c WHERE {$filter} GROUP BY c.IDFP"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); foreach ($rows as $row) { $numeroFactura = $contador->asignaContador(); $factura = new FrecibidasCab(); $factura->setIDSucursal($idSucursal); $factura->setIDContador($this->request['idContador']); $factura->setNumeroFactura($numeroFactura); $factura->setSuFactura($this->request['suFactura']); $factura->setFecha($this->request['fecha']); $factura->setIDProveedor($filtro['idProveedor']); $factura->setCuentaCompras($ctaCompras); $factura->setIDFP($row['IDFP']); $idFactura = $factura->create(); // Guardo en un array los id's de facturas generadas $facturados[] = $idFactura; if ($idFactura != 0) { // Crear las líneas de factura $em = new EntityManager($pedidos->getConectionName()); $query = "select l.* from {$pedidos->getDataBaseName()}.ErpPedidosLineas l, {$pedidos->getDataBaseName()}.ErpPedidosCab c where (c.IDPedido=l.IDPedido) and (c.IDFP='{$row['IDFP']}') and {$filter}"; $em->query($query); $lineas = $em->fetchResult(); $em->desConecta(); foreach ($lineas as $linea) { $linFactura = new FrecibidasLineas(); $linFactura->setIDFactura($idFactura); $linFactura->setIDArticulo($linea['IDArticulo']); $linFactura->setDescripcion($linea['Descripcion']); $linFactura->setUnidades($linea['UnidadesPtesFacturar']); $linFactura->setPrecio($linea['Precio']); $linFactura->setDescuento($linea['Descuento']); $linFactura->setIva($linea['Iva']); $linFactura->setIDPedido($linea['IDPedido']); $linFactura->setIDLineaPedido($linea['IDLinea']); if ($linFactura->create()) { // Pongo el estado de la linea de pedido a "Facturado" y // quitar el pendiente de facturar. $lineaPedido = new PedidosLineas($linea['IDLinea']); $lineaPedido->setIDEstado(3); $lineaPedido->setUnidadesPtesFacturar(0); $lineaPedido->save(); } unset($linFactura); } // Totalizar la factura $factura->recalcula(); // Crear vencimientos $factura->creaVctos(); // Anotar en caja si procede $factura->anotaEnCaja(); // Actualiza las cabecera del grupo de pedidos $em = new EntityManager($pedidos->getConectionName()); $query = "update {$pedidos->getDataBaseName()}.ErpPedidosCab c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and ({$filter})"; $em->query($query); $em->desConecta(); unset($factura); } else { $this->values['errores'] = $factura->getErrores(); } } return $this->listAction(); }