EL PROCEDIMIENTO QUE TENGO HASTA AHORA ES ASI
Código MySQL:
Ver originalDECLARE detalle_cur CURSOR FOR
SELECT detalle.id_cabecera
, detalle.codigo_cuenta
, detalle.sucursal
, detalle.debito
, detalle.credito
, detalle.tercero
, detalle.centrocosto
FROM " . $tablaMes . " as detalle
HAVING detalle.id_cabecera
= " . $idComprobante . "; OPEN detalle_cur;
FETCH detalle_cur
INTO v_id_cabecera
, v_codigo_cuenta
, v_sucursal
, v_debito
, v_credito
, v_tercero
, v_centro_costo
; SET tmp_continuar
= continuar
; SELECT v_codigo_cuenta
, v_sucursal
, v_debito
, v_credito
, v_tercero
, v_centro_costo
;
loop_interno: LOOP
SELECT codigo
,movimiento
,terceros
,mayor
,centrocosto
FROM puc
WHERE codigo
= v_codigo_cuenta
INTO puc_cuenta
, puc_movimiento
, puc_terceros
, puc_mayor
, puc_centro_costo
; SELECT puc_cuenta
, puc_movimiento
, puc_terceros
, puc_mayor
, puc_centro_costo
; SELECT id
FROM ".$tablaSaldos." WHERE cuenta
= v_codigo_cuenta
and tercero
= v_tercero
and sucursal
= v_sucursal
INTO v_id_saldo
; INSERT INTO ".$tablaSaldos." (cuenta
,tercero
,sucursal
,".$campoDebito.",".$campoCredito.") VALUES(`v_codigo_cuenta`,`v_tercero`,`v_sucursal`,v_debito
,v_credito
); UPDATE ".$tablaSaldos." SET ".$campoDebito." = ".$campoDebito.$signo." v_debito
, ".$campoCredito." = ".$campoCredito.$signo." v_credito
WHERE id
= v_id_saldo
; loop_centro: LOOP
SELECT id_padre
FROM centros_costo
WHERE id_centro_costo
= v_centro_costo
INTO padre_centro_costo
;
SELECT id
FROM ".$tablaSaldos." WHERE cuenta
= v_codigo_cuenta
and tercero
= v_tercero
and sucursal
= v_sucursal
INTO v_id_saldo
; INSERT INTO " . $tablaSaldos . " (cuenta
,tercero
,sucursal
,centroCosto
," . $campoDebito . "," . $campoCredito . ") VALUES(`v_codigo_cuenta`,`v_tercero`,`v_sucursal`, `v_centro_costo`,v_debito
,v_credito
); UPDATE " . $tablaSaldos . " SET " . $campoDebito . " = " . $campoDebito . $signo . " v_debito
, " . $campoCredito . " = " . $campoCredito . $signo . " v_credito
WHERE id
= v_id_saldo
;
SET v_centro_costo
= padre_centro_costo
; LEAVE loop_centro;
SELECT id
FROM ".$tablaSaldos." WHERE cuenta
= v_codigo_cuenta
and tercero
= v_tercero
and sucursal
= v_sucursal
INTO v_id_saldo
; INSERT INTO " . $tablaSaldos . " (cuenta
,tercero
,sucursal
,centroCosto
," . $campoDebito . "," . $campoCredito . ") VALUES(`v_codigo_cuenta`,`v_tercero`,`v_sucursal`, `v_centro_costo`,v_debito
,v_credito
); UPDATE " . $tablaSaldos . " SET " . $campoDebito . " = " . $campoDebito . $signo . " v_debito
, " . $campoCredito . " = " . $campoCredito . $signo . " v_credito
WHERE id
= v_id_saldo
; SET v_codigo_cuenta
= puc_mayor
; LEAVE loop_interno;
SET continuar
= tmp_continuar
; CLOSE detalle_cur;
El diseñadoor de la base de datos crea una tabla que se encarga de guardar la mayorización de proceso contable por año, por eso lo del procedimiento que crea tablas diferentes nombres estructura igual.
La idea del procedimiento es que si yo ingreso una cuenta con un centro de costo
11050502 con un centro de costo 102030
11100503 sin centro de costo
en mi base de datos en mi tabla me debe guardar el padre de la cuenta y del centro de costo, pero si mi cuenta no tiene centro de costo solo ingrese el padre de la cuenta con el centro de costo null
Lo que debe hacer...........
CUENTA CENTRO_COSTO
11100503 NULL
111005 NULL
1110 NULL
11 NULL
1 NULL
11050502 102030
11050502 102000
11050502 100000
11050502
110505 102030
110505 102000
110505 100000
110505
1105 102030
1105 102000
1105 100000
1105
11 102030
11 102000
11 100000
11
1 102030
1 102000
1 100000
1
eso es lo que me debe hacer el procedimiento, pero el procedimiento que hasta el momento tengo solo me guarda
Lo que hace .............
CUENTA CENTRO COSTO
11100503 NULL
111005 NULL
1110 NULL
11 NULL
1 NULL
11050502 102030
11050502 102000
11050502 100000
11050502
nose por donde mas moverle, llevo 4 dias en lo mismo y no he podido encontrar la solución agradezco toda la ayuda que me puedan brindar