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;
 }