miércoles, 9 de octubre de 2024

Replace text contained in files inside a folder in Windows

Puedes usar PowerShell para buscar y reemplazar texto en varios archivos dentro de una carpeta. Aquí tienes un ejemplo que te permitirá hacer esto:

Reemplazar texto usando PowerShell:

  1. Abre PowerShell como administrador.
  2. Ejecuta el siguiente comando:

 

Get-ChildItem -Path "C:\ruta\de\la\carpeta" -Recurse -Filter "*.txt" | ForEach-Object {
    (Get-Content $_.FullName) -replace 'texto_a_reemplazar', 'nuevo_texto' | Set-Content $_.FullName
}

  • Get-ChildItem: Busca los archivos dentro de la carpeta especificada.
  • -Path "C:\ruta\de\la\carpeta": Cambia esto por la ruta de tu carpeta.
  • -Recurse: Busca en subcarpetas.
  • -Filter "*.txt": Aplica el filtro solo para archivos .txt. Puedes cambiar esto según el tipo de archivo.
  • ForEach-Object: Recorre cada archivo encontrado.
  • Get-Content $_.FullName: Obtiene el contenido del archivo.
  • -replace 'texto_a_reemplazar', 'nuevo_texto': Reemplaza el texto.
  • Set-Content $_.FullName: Guarda el archivo con el nuevo contenido.

Este script busca el texto específico en todos los archivos y lo reemplaza por el nuevo texto.

 

martes, 16 de julio de 2024

Get DocumentType From FactAcct Generated By AI

 
-- select * from adempiere.fnt_getdocumenttypebyid(318, 1546039);

CREATE OR REPLACE FUNCTION fnt_getdocumenttypebyid(table_id numeric(10,0), record_id numeric(10,0))
RETURNS varchar AS $$
DECLARE
    table_name TEXT;
    select_query TEXT;
    result RECORD;
    document_type VARCHAR;
BEGIN
    -- Obtiene el nombre de la tabla a partir de ad_table_id
    SELECT t.TableName
    INTO table_name
    FROM AD_Table t
    WHERE t.AD_Table_ID = table_id;

    -- Construye la consulta SELECT
    select_query := 'SELECT C_DocType_ID FROM ' || table_name ||
        ' WHERE ' || table_name || '_ID = ' || record_id || ';';

    -- Ejecuta la consulta y obtiene el C_DocType_ID
    EXECUTE select_query INTO document_type;

    -- Obtiene el nombre del tipo de documento
    SELECT dt.Name
    INTO document_type
    FROM C_DocType dt
    WHERE dt.C_DocType_ID = document_type::int;

    RETURN document_type;
END;
$$ LANGUAGE plpgsql;

Get DocumentNo By Table ID and Record ID

 
-- drop function fnt_getdocumentbyid(table_id numeric(10,0), record_id numeric(10,0));

-- select * from adempiere.fnt_getdocumentbyid(321, 1000000);

CREATE OR REPLACE FUNCTION fnt_getdocumentbyid(table_id numeric(10,0), record_id numeric(10,0))
RETURNS varchar AS $$
DECLARE
    table_name TEXT;
    select_query TEXT;
    result RECORD;
        v_documentno varchar;
BEGIN
    -- Obtiene el nombre de la tabla a partir de ad_table_id
    SELECT t.TableName
    INTO table_name
    FROM AD_Table t
    WHERE t.AD_Table_ID = table_id;

    -- Construye la consulta SELECT
    select_query := 'SELECT * FROM ' || table_name ||
        ' WHERE ' || table_name || '_ID = ' || record_id || ';';

    -- Ejecuta la consulta y muestra los resultados
    FOR result IN EXECUTE select_query LOOP
        -- Imprime los valores de cada fila
        -- RAISE NOTICE '%', result.DocumentNo; -- Reemplaza los nombres de columna
                v_documentno = result.DocumentNo;
    END LOOP;

    return v_documentno;
END;
$$ LANGUAGE plpgsql;

jueves, 29 de febrero de 2024

cannot be found by net.sf.jasperreports.engine_6.17.0

 

Hello,
 
Currently I'm using iDempiere 11 and I use Jasper Studio 6.21 for designing the reports , when I want to open a report from print format it doesn't work and log shows the follow error message:

caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.support.BeanDefinitionRegistry cannot be found by net.sf.jasperreports.engine_6.17.0

I have tried compiled report with compatilibility and also I have tried including jasper report engine library 6.17 into plugin.
 
I am using .jrxml files, I found the solution for this problem, the cause is that I downloaded an outdated iDempiere server and that's why I couldn't open my Jasper reports.

The steps to solve this problem are as follows:

1) Copy the builded project which is located in:

C:\Users\Lenovo\i11\org.idempiere.p2\target\products\org.adempiere.server.product\win32\win32\x86_64

2) Paste and replace all files on iDempiere Server Folder

3) Run setup.bat or setup.sh depending of your Operating System

4) Run idempiere-server.bat or idempiere-server.sh depending of your Operating System