Power Builder - Ayuda con DW

 
Vista:

Ayuda con DW

Publicado por Sandra (16 intervenciones) el 15/02/2006 17:59:55
Hola a todos chicos, bueno desde temprano estoy tratando de hacer lo sgte: tengo un DW Cabecera de contiene un DDDW q contiene a los proveedores.. bueno el caso es q todos los proveedores no tienen Impuesto a la Renta, Impuesto E. Solidaridad y IGV.

Entonces al momento de seleccionar ejemplo al Proveedor "Boticas XXX" se debe activar.. el CheckBox IGV y los demas desactivados

Si selecciono otro Proveedor "Ana Perez" se debe activar los CheckBox Impuesto a la Renta, Impuesto E. Solidaridad

El monto lo ingreso luego de q selecciono el proveedor del DDDW (segun el proveedor se activaran los CheckBoxs) al costado de cada CheckBoxs hay una caja segun el proveedor y segun q el CheckBox activado... y segun el monto esas cajitas me deben arrojar un resultado.. el cual me sale correctamente... pero no cuando yo coloco el monto.. si no cuando vuelvo a seleccionar al mismo.. proveedor... no se si me dejo explicar..

Q es lo q tengo q hacer para q cuando digite el monto despues de seleecionar el proveedor y segun los CheckBoxs q se activen al darle enter o presionar el tab esas cajas se llenen... sin necesidad... de volver a seleccionar al mismo proveedor... Haber si me dan una ayudadita chicos gracias.

PD. Todo esta en un mismo DW..

Tengo el sgte Codigo:

Evento: ItemChanged - dw_cabecera

Integer ll_Null, i
String ls_FlagMonto
String ls_Serv
String ls_tipoprov
Decimal {3}ldec_Monto, li_SubTotal
Decimal {3}lc_IGV
Decimal {3}ldec_IR, ldec_IES

SetNull(ll_Null)

This.AcceptText()

/*------------------------------Capturando el IGV---------------------------*/
SELECT valor_uno
INTO :lc_IGV
FROM TabParametro
WHERE tipo = 'IGV';

lc_IGV = lc_IGV/100.00

/*------------------------Capturando el Impuesto a la Renta-----------------*/
SELECT valor_uno
INTO :ldec_IR
FROM TabParametro
WHERE tipo = 'IR';

ldec_IR = ldec_IR/100.00

/*-----------------------Capturando el Impuesto E. SOLIDARIDAD-------------*/
SELECT valor_uno
INTO :ldec_IES
FROM TabParametro
WHERE tipo='IES';

ldec_IES = ldec_IES/100.000
ldec_Monto = dw_cabecera.GetItemNumber(dw_cabecera.GetRow(), 'monto')
li_SubTotal = (ldec_Monto/(1.00 + lc_IGV))

CHOOSE CASE dwo.Name
CASE 'codigotipocompra'
is_tipocompra = This.GetText()
IF is_tipocompra = '06' THEN
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'nrotipocompra' , ll_Null)
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'anhotipocompra' , ll_Null) dw_cabecera.SetItem(dw_cabecera.GetRow(), 'siglastipocompra', ll_Null) ELSE
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'referencia', ll_Null) END IF

CASE 'codigo_proveedor'
is_CodProv = This.GetText()
/****Consulta si el Proveedor es Natural o Juridico para activar los campos necesarios***/

SELECT dbo.TabMaeProv.NaturalJuridica
INTO :ls_tipoprov
FROM dbo.TabMaeProv
WHERE dbo.TabMaeProv.nro_maestro = :is_CodProv;

/*************************************************************************************************/
IF ls_tipoprov = 'N' THEN
dw_cabecera.Object.flg_ir.TabSequence = '60'
dw_cabecera.Object.flg_ies.TabSequence = '70'
dw_cabecera.Object.flg_igv.TabSequence = '0'
dw_cabecera.Object.flg_otros.TabSequence = '0'
dw_cabecera.Object.monto_igv.TabSequence = '0'
dw_cabecera.Object.monto_otros.TabSequence = '0'
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_ir', '1')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_ies', '1')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_igv', '0')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_otros', '0')
/**********Asignando Valores***************************/
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ir', (ldec_Monto * ldec_IR))
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ies', Round(ldec_Monto * ldec_IES, 2))
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_igv', 0)
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_otros', 0)
/*************************************************************/
ELSE
dw_cabecera.Object.flg_ir.TabSequence = '0'
dw_cabecera.Object.flg_ies.TabSequence = '0'
dw_cabecera.Object.flg_igv.TabSequence = '80'
dw_cabecera.Object.flg_otros.TabSequence = '90'
dw_cabecera.Object.monto_ir.TabSequence = '0'
dw_cabecera.Object.monto_ies.TabSequence = '0'
dw_cabecera.Object.monto_igv.TabSequence = '270'
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_ir', '0')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_ies', '0')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_igv', '1')
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'flg_otros', '0')
/******Asignando Valores*************************************/
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ir', 0)
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ies', 0)
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_igv', ldec_Monto - li_SubTotal)
/******************************************************************/
END IF
END CHOOSE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con DW

Publicado por Barzi (9 intervenciones) el 15/02/2006 20:15:08
Hola Sandra espero q te sirva bueno si logre enterder lo q deseas..... luego de tu codigo coloca lo sgte...

Te explico extraemos los datos activados con GetItemString y lo igualamos a las variables..

//Variables
String ls_flg_ir, ls_flg_ies, ls_flg_igv, ls_flg_otros

ls_flg_ir = dw_cabecera.GetItemString(1, 'flg_ir')
ls_flg_ies = dw_cabecera.GetItemString(1, 'flg_ies')
ls_flg_igv = dw_cabecera.GetItemString(1, 'flg_igv')
ls_flg_otros = dw_cabecera.GetItemString(1, 'flg_otros')

//Luego como extraimos las variables.. ejemplo el campo flg_ir al ser activado
es
//1 entonces damos la condicion y asi para los demas

IF ls_flg_ir ='1' THEN
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ir', (ldec_Monto * ldec_IR))
ELSE
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ir', 0)
END IF

IF ls_flg_ies ='1' THEN
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ies', Round(ldec_Monto * ldec_IES, 2))
ELSE
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_ies', 0)
END IF

IF ls_flg_igv ='1' THEN
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_igv', ldec_Monto - li_SubTotal)
ELSE
dw_cabecera.SetItem(dw_cabecera.GetRow(), 'monto_igv', 0)
END IF

Espero q te sirva..

Barzi

Saludos de Lima - Peru
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar