public function FrecibidasCab()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpFrecibidasCab";
     mysql_query($query);
     $query = "select * from {$this->dbOrigen}.frecibidas_cab";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $c = new FrecibidasCab();
         $c->setIDFactura($row['IDFactura']);
         $c->setIDContador(4);
         $c->setNumeroFactura($row['NumeroFactura']);
         $c->setIDSucursal(1);
         $c->setSuFactura($row['SuFactura']);
         $c->setFecha($row['Fecha']);
         $c->setIDProveedor($row['IDProveedor']);
         $c->setImporte($row['Importe']);
         $c->setDescuento($row['Descuento']);
         $c->setBaseImponible1($row['BaseImponible1']);
         $c->setIva1($row['Iva1']);
         $c->setCuotaIva1($row['CuotaIva1']);
         $c->setRecargo1($row['Recargo1']);
         $c->setCuotaRecargo1($row['CuotaRecargo1']);
         $c->setBaseImponible2($row['BaseImponible2']);
         $c->setIva2($row['Iva2']);
         $c->setCuotaIva2($row['CuotaIva2']);
         $c->setRecargo2($row['Recargo2']);
         $c->setCuotaRecargo2($row['CuotaRecargo2']);
         $c->setBaseImponible3($row['BaseImponible3']);
         $c->setIva3($row['Iva3']);
         $c->setCuotaIva3($row['CuotaIva3']);
         $c->setRecargo3($row['Recargo3']);
         $c->setCuotaRecargo3($row['CuotaRecargo3']);
         $c->setTotalBases($row['TotalBases']);
         $c->setTotalIva($row['TotalIva']);
         $c->setTotalRecargo($row['TotalRecargo']);
         $c->setTotal($row['Total']);
         $c->setCuentaCompras($row['CuentaCompras']);
         $c->setObservaciones($row['Observaciones']);
         $c->setIDFP($row['IDFP']);
         $c->setPrimaryKeyMD5(md5($row['IDFactura']));
         if (!$c->create()) {
             $errores[] = $c->getErrores();
             $nErrores++;
         } else {
             $nItems++;
         }
     }
     //mysql_close($dbLink);
     echo "Facturas recibidas creadas {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
 /**
  * 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;
 }
 /**
  * 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');
     }
 }
 /**
  * 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);
 }