コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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
  */
 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'], 4);
         $idContador = $contador->getIDContador();
         // Buscar la cuenta contable de ventas 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[3]);
             if ($proveedor->getIDProveedor() != '') {
                 // Pongo los valores a cero en caso de que no venga nada
                 for ($i = 5; $i <= 10; $i++) {
                     if ($linea[$i] == '') {
                         $linea[$i] = 0;
                     }
                 }
                 $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);
                 if ($this->request['RespectarNumerosFactura'] == 'on') {
                     $numeroFactura = $contador->getSerie() . (1200000 + $linea[0]);
                 } else {
                     $numeroFactura = $contador->asignaContador();
                 }
                 $factura->setNumeroFactura($numeroFactura);
                 $factura->setIDSucursal($_SESSION['suc']);
                 $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]);
                 $factura->setIDProveedor($proveedor->getIDProveedor());
                 $factura->setSuFactura($linea[0]);
                 $factura->setReferencia("Import " . date('d/m/y'));
                 $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->setCuentaCompras($ctaCompras);
                 if ($factura->create()) {
                     $factura->creaVctos();
                 } else {
                     $this->values['errores'] = $factura->getErrores();
                 }
             } else {
                 $this->values['errores'][] = "No existe el proveedor " . $linea[2] . " " . $linea[4] . ". No se carga la factura " . $linea[1];
             }
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     unset($archivo);
 }