lunes, 19 de julio de 2021
DRAG AND DROP
lunes, 12 de julio de 2021
Lee XML
FOR EACH RowNode OF gMiCFDI.Comprobante.Conceptos ON Concepto // where RowNode:Importe.Value < "0"
Info(RowNode:Cantidad, RowNode:ValorUnitario)
gstUnConcepto.sClaveProdServ = RowNode:ClaveProdServ
gstUnConcepto.cyValorUnitario = RowNode:ValorUnitario
gstUnConcepto.nCantidad = RowNode:Cantidad
Add(garrConcepto,gstUnConcepto)
END
/////////////////////////**************************
LeeXML ROUTINE
DATA
rtn:filtro cstring(256)
rtn:numeroCfdi SHORT
rtn:respuesta SHORT
rtn:nombreArchivo cstring(256)
rtn:bandera BYTE
rtn:UUID cstring(32)
rtn:FechaTimbrado cstring(32)
CODE
if RIGHT(LOC:NombreDirectorio, 1) <> '\' then
rtn:filtro = LOC:NombreDirectorio & '\*.xml'
else
rtn:filtro = LOC:NombreDirectorio & '*.xml'
end
MESSAGE(rtn:filtro)
DIRECTORY(QArchivos,rtn:filtro,ff_:NORMAL)
rtn:numeroCfdi = RECORDS(QArchivos)
LOOP i# = rtn:numeroCfdi TO 1 BY -1
GET(QArchivos,i#)
MESSAGE(QArchivos:name)
if RIGHT(LOC:NombreDirectorio, 1) <> '\' then
rtn:nombreArchivo = LOC:NombreDirectorio & '\' & QArchivos:name
else
rtn:nombreArchivo = LOC:NombreDirectorio & QArchivos:name
end
!!!!!!!!!!!!!!!!!!!!!!!!!!*****!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LOC:UUID = ''
rtn:respuesta = XML:LoadFromFile(rtn:nombreArchivo)
Xml:GotoTop() ! Sets the pointer to ('tfd:TimbreFiscalDigital','UUID')
If NOT Xml:FindNextNode('tfd:TimbreFiscalDigital','UUID')
IF NOT XML:ReadCurrentData(LOC:UUID)
rtn:bandera = true
END
End
if rtn:bandera = true
clear(cfdi:record)
cfdi:UUID = LOC:UUID
if access:cfdi.fetch(cfdi:PKUUID) = Level:Benign
MESSAGE('El CFDI ya está grabado')
else
clear(cfdi:record)
cfdi:UUID = LOC:UUID
Xml:GotoTop() ! Sets the pointer to ('tfd:TimbreFiscalDigital','FechaTimbrado')
If NOT Xml:FindNextNode('tfd:TimbreFiscalDigital','FechaTimbrado')
IF NOT XML:ReadCurrentData(cfdi:FechaTimbrado)
!!MESSAGE('Fecha de Timbrado es: ' & LOC:FechaTimbrado)
END
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Comprobante','Fecha')
XML:ReadCurrentData(cfdi:Fecha)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Comprobante','Serie')
XML:ReadCurrentData(cfdi:Serie)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Comprobante','Folio')
XML:ReadCurrentData(cfdi:Folio)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Comprobante','SubTotal')
XML:ReadCurrentData(cfdi:Subtotal)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Comprobante','Total')
XML:ReadCurrentData(cfdi:Total)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Emisor','Rfc')
XML:ReadCurrentData(cfdi:EmisorRFC)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Emisor','Nombre')
XML:ReadCurrentData(cfdi:EmisorNombre)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Receptor','Rfc')
XML:ReadCurrentData(cfdi:ReceptorRFC)
End
Xml:GotoTop()
If NOT Xml:FindNextNode('cfdi:Receptor','Nombre')
XML:ReadCurrentData(cfdi:ReceptorNombre)
End
access:cfdi.insert()
!!! Ahora leo los conceptos
free(QConceptos)
Xml:GotoTop()
If NOT xml:FindNextNode('cfdi:Conceptos','cfdi:Concepto')
XML:AutoRootSet()
rtn:respuesta = Xml:loadQueue(QConceptos,False, False)
LOOP Q# = 1 TO RECORDS(QConceptos) BY 1;GET(QConceptos,Q#)
clear(cfde)
cfde:ClaveProdServ = QCo:ClaveProdServ
cfde:ClaveUnidad = QCo:ClaveUnidad
cfde:NoIdentificacion = QCo:NoIdentificacion
cfde:Cantidad = QCo:Cantidad
cfde:Unidad = QCo:Unidad
cfde:Descripcion = QCo:Descripcion
cfde:ValorUnitario = QCo:ValorUnitario
cfde:Importe = QCo:Importe
cfde:Descuento = QCo:Descuento
cfde:UUID = cfdi:UUID
cfde:IdCfde = s_dameIdentificador()
access:cfde.insert()
END
end !!! if NOT xml:FindNextNode('cfdi:Conceptos','cfdi:Concepto')
end ! else
end !if rtn:bandera = true
!!*************************************************************************
XML:Free()
DELETE(QArchivos) !Get rid of all other entries
END !!!! LOOP i# = rtn:numeroCfdi TO 1 BY -1
EXIT
Usuario NetworkUser en Windev
gsUsuario is string
gbAcceso is boolean = False
gsTipo is string
gsArea is string
gsNombre is string
gsClave is string
gnNivel is int
gsIdDB_Alumno is string
gsIdDB_Area is string
//(gsUsuario,gsArea,gsTipo, gbAcceso) = Open(WIN_Acceso)
//INFO(gsUsuario,gsArea,gsTipo)
bValida is boolean
gsUsuario = NetworkUser()
//gsUsuario = "FVALENCIA"
HReadSeekFirst(DB_Alumno,Clave,gsUsuario,hGeneric)
IF HFound(DB_Alumno) = False THEN
Error("Alumno no encontrado")
bValida = False
gbAcceso = False
gsTipo = ""
gsArea = ""
ELSE
gnNivel = DB_Alumno.Nivel
gsTipo = DB_Alumno.IdTipo
gsNombre = DB_Alumno.Nombre
gsIdDB_Alumno = DB_Alumno.IdDB_Alumno
HReadSeekFirst(DB_Area,IdDB_Area,DB_Alumno.IdDB_Area)
IF HFound(DB_Area) =True THEN
gsArea = DB_Area.Nombre
gsIdDB_Area = DB_Area.IdDB_Area
END
bValida = True
gbAcceso = True
END
WIN_Menu.SBC_Usuario = "Usuario: " + gsUsuario
WIN_Menu.SBC_Nombre = "Nombre: " + gsNombre
//WIN_MENU.SBC_Area = "Área: " + gsArea
/////////////////////////////////////////////////
IF gbAcceso = False THEN
EndProgram()
END
//OPT_Sistemas..Visible = False
IF gnNivel = 0 THEN
OPT_Sistemas..Visible = False
// MENUFILE_Catalogos..Visible = False
// MENUFILE_Calendario.OPT_NuevaObligacion..Visible = False
// MENUFILE_Utilerías..Visible = False
//ELSE
// MENUFILE_Catalogos..Visible = True
END
miércoles, 7 de julio de 2021
Windows - Excel
Una guía paso a paso para los perplejos:
- Presione la tecla de Windows
- Escribe " intl.cpl " y presiona Enter.
- Haga clic en " Configuración adicional ".
- Vaya a la pestaña " Números ":
- Cambia el símbolo decimal a un punto .
- Cambie el " Símbolo de agrupación de dígitos " a un espacio .
- Cambie el " Separador de lista " a una coma .
- Vaya a la pestaña " Moneda ":
- Cambia el símbolo decimal a un punto .
- Cambie el " Símbolo de agrupación de dígitos " a un espacio .
martes, 6 de julio de 2021
Ejemplo de campo tipo fórmula
CONCAT(TO_CHAR(db_con_catalogo.Cta1,'0999'), CHAR(45),
TRIM(TO_CHAR(db_con_catalogo.Cta2,'09')), CHAR(45),
TRIM(TO_CHAR(db_con_catalogo.Cta3,'09')), CHAR(45),
TRIM(TO_CHAR(db_con_catalogo.Cta4,'09')), CHAR(45),
TRIM(TO_CHAR(db_con_catalogo.Cta5,'09')))
Try catch end
// -------------------------------------------------- // Procedure principal que executa uma query com tratamento de exceção // -----------...
-
Una guía paso a paso para los perplejos: Presione la tecla de Windows Escribe " intl.cpl " y presiona Enter....
-
MyWorksheet is xlsDocument xlsAddWorksheet(MyWorksheet, "R04_C-0451") //MyWorksheet = xlsOpen(sNombreArchivoXLS, xlsWrite) ...
-
Copiado del blog de mi amigo Francisco Carabez En caso de que no se cuenta con la contraseña del HFSQL Control Center: Respalda o copia e...