Tengo el evento modificacion de un formulario_ml en el que recorro con un foreach el array $datos que este recibe por parámetro, pero noto que no avanza y no incrementa una variable llamada comprob.
Este es el código de ese evento:
function evt__formulario_ml__modificacion($datos)
{
$this->dep('datos')->resetear();
$sql = "select * from paramet";
$paramet = consultar_fuente($sql);
$this->s__cuit = $paramet[0]["cuit"];
$this->s__fijcom = $paramet[0]["ptovta"];
$array_tipo = array("id_tipo" => $this->s__id_tipo);
$tipos_fac = toba::tabla('tipos_fac');
$tipos_fac->cargar($array_tipo);
$tipo_fac = $tipos_fac->get();
$this->s__alicuota = $tipo_fac["alicuota"];
$this->s__haber = array();
$conceptos = toba::tabla("conceptos");
$result = $conceptos->get_listado();
foreach ($result as $value) $this->s__haber[] = 0;
$this->s__importe = 0;
$this->s__iva = 0;
$arca = new FacturacionARCA();
$autenticar = $arca->autenticar();
if(is_string($autenticar)) {
toba::notificacion()->error($autenticar);
}else{
$tipo_arca = $tipo_fac["tipo"]=="A" ? 1 : 6;
$comprob = $arca->obtenerUltimoComprobante($this->s__cuit, $this->s__fijcom, $tipo_arca);
foreach ($datos as $key => $value) {
if (!empty($datos[$key]["seleccionar"])) {
$id_cliente = $datos[$key]["id_cliente"];
$id_cuota = $datos[$key]["id_cuota"];
$importe = $this->cuota($id_cuota);
if (!empty($importe)) {
$comprob++;
$factura = $this->factura($id_cliente, $comprob, $importe);
if (!empty($factura)) {
$id_factura = $factura["id_factura"];
$total = round($factura["importe"] + $factura["iva"], 2);
$this->detalle($id_factura, $id_cliente, $id_cuota, $comprob, $total);
$this->ctacte($id_cliente, $comprob, $total);
}
}
}
}
}
$this->dep('datos')->resetear();
}
Este es el código de los otros métodos que se llaman desde el evento:
private function cuota($id_cuota)
{
$importe = 0;
if (!empty($id_cuota)) {
$array_cuota = array("id_cuota" => $id_cuota);
$result = $this->dep("datos")->tabla("conceptos_cuotas")->get_listado($array_cuota);
if (!empty($result)) {
foreach ($result as $value) {
$importe += $value["importe"] * $value["cantidad"];
}
}
}
$importe = round($importe, 2);
return $importe;
}
private function factura($id_cliente, $comprob, $importe)
{
$facturas = toba::tabla("facturas");
$iva = round($importe * $this->s__alicuota / 100,2);
$timezone = new DateTimeZone("America/Argentina/Cordoba");
$ahora = new DateTime("now", $timezone);
$fecalt = $ahora->format("Y-m-d H:i:s.u");
$fecha_bd = new DateTime($this->s__datos_filtro["fecha"], $timezone);
$referencia = strtoupper(IntlDateFormatter::formatObject($fecha_bd, 'MMMM/Y', 'es_AR'));
$datos = array("id_facturae" => 0, "id_cliente" => $id_cliente, "fecha" => $this->s__datos_filtro["fecha"], "id_tipo" => $this->s__id_tipo, "fijcom" => $this->s__fijcom, "comprob" => $comprob, "referencia" => $referencia, "iva" => $iva, "importe" => $importe, "fecalt" => $fecalt);
$facturas->set($datos);
$facturas->sincronizar();
$factura = $facturas->get();
return $factura;
}
private function detalle($id_factura, $id_cliente, $id_cuota, $comprob, $total)
{
$array_cuota = array("id_cuota" => $id_cuota, "factura" => false, "anula" => false);
$result = $this->dep("datos")->tabla("conceptos_cuotas")->get_filas($array_cuota, true);
foreach ($result as $key => $value) {
$id_concepto = $value["id_concepto"];
$i = $id_concepto - 1;
$this->s__haber[$i] += $value["importe"] * $value["cantidad"];
$iva = $value["importe"] * $value["cantidad"] * $this->s__alicuota / 100;
$importe = $value["importe"] * $value["cantidad"] + $iva;
$this->pendiente($id_cliente, $comprob, $id_concepto, $total, $importe);
$this->detfac($id_factura, $id_concepto, $value["cantidad"], $value["importe"]);
$concepto_cuota = $this->dep("datos")->tabla("conceptos_cuotas")->get_fila($key);
$concepto_cuota["factura"] = true;
$this->dep("datos")->tabla("conceptos_cuotas")->set($concepto_cuota);
$this->dep("datos")->tabla("conceptos_cuotas")->sincronizar();
$this->s__importe += $importe;
$this->s__iva += $iva;
}
}
private function pendiente($id_cliente, $comprob, $id_concepto, $total, $importe)
{
$array_pendiente = array("id_cliente" => $id_cliente, "fecha" => $this->s__datos_filtro["fecha"]);
$pendientes = toba::tabla("pendientes");
$pendientes->resetear();
$pendientes->cargar($array_pendiente);
$pendiente = $pendientes->get();
if (!empty($pendiente)) {
$id_pendiente = $pendiente["id_pendiente"];
} else {
$timezone = new DateTimeZone("America/Argentina/Cordoba");
$ahora = new DateTime("now", $timezone);
$fecalt = $ahora->format("Y-m-d H:i:s.u");
$datos = array("id_cliente" => $id_cliente, "fecha" => $this->s__datos_filtro["fecha"], "tipo" => "FAC", "fijcom" => $this->s__fijcom, "comprob" => $comprob, "total" => $total, "fecalt" => $fecalt);
$pendientes->set($datos);
$pendientes->sincronizar();
$pendiente = $pendientes->get();
$id_pendiente = $pendiente["id_pendiente"];
}
if (!empty($id_pendiente)) {
$array_detalle = array("id_pendiente" => $id_pendiente, "id_concepto" => $id_concepto, "importe" => $importe);
$conceptos_pendientes = toba::tabla("conceptos_pendientes");
$conceptos_pendientes->set($array_detalle);
$conceptos_pendientes->sincronizar();
}
}
private function detfac($id_factura, $id_concepto, $cantidad, $importe)
{
$array_detalle = array("id_factura" => $id_factura, "id_concepto" => $id_concepto, "cantidad" => $cantidad, "importe" => $importe);
$detalle = toba::tabla("detalle");
$detalle->set($array_detalle);
$detalle->sincronizar();
}
private function ctacte($id_cliente, $comprob, $importe)
{
$ctacte = toba::tabla("ctacte");
$timezone = new DateTimeZone("America/Argentina/Cordoba");
$ahora = new DateTime("now", $timezone);
$fecalt = $ahora->format("Y-m-d H:i:s.u");
$fecha_bd = new DateTime($this->s__datos_filtro["fecha"], $timezone);
$referencia = strtoupper(IntlDateFormatter::formatObject($fecha_bd, 'MMMM/Y', 'es_AR'));
$datos = array("id_cliente" => $id_cliente, "fecha" => $this->s__datos_filtro["fecha"], "tipo" => "FAC", "fijcom" => $this->s__fijcom, "comprob" => $comprob, "referencia" => $referencia, "importe" => $importe, "fecalt" => $fecalt);
$ctacte->set($datos);
$ctacte->sincronizar();
}
´´´
¿Cómo puedo solucionar este error?