v1.0.11 - Plugin BCV Exchange Rate para iDempiere v10

This commit is contained in:
2026-07-03 15:00:31 -04:00
commit e9c19b4b3b
16 changed files with 1700 additions and 0 deletions
+182
View File
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<Migration>
<Application>
<AD_Migration>
<Step seqNo="10" type="D" name="Create Process BCV_ExchangeRateUpdate">
<Table name="AD_Process">
<Record>
<AD_Process_ID>5000000</AD_Process_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>BCV_ExchangeRateUpdate</Name>
<Description>Actualización automática de tasa de cambio oficial BCV (USD/VES)</Description>
<Help>Obtiene la tasa de cambio oficial del Banco Central de Venezuela y la registra en la tabla C_Conversion_Rate. La moneda funcional se obtiene del esquema contable principal del grupo empresarial.</Help>
<Classname>com.venezuela.bcvrate.process.BCVExchangeRateProcess</Classname>
<IsDirectPrint>N</IsDirectPrint>
<IsReport>N</IsReport>
<IsServerProcess>Y</IsServerProcess>
<ShowHelp>L</ShowHelp>
<AD_WF_Process_ID>0</AD_WF_Process_ID>
<Value>BCV_ExchangeRateUpdate</Value>
</Record>
</Table>
</Step>
<Step seqNo="20" type="D" name="Create Process Parameter AD_Client_ID">
<Table name="AD_Process_Para">
<Record>
<AD_Process_Para_ID>5000000</AD_Process_Para_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>Client</Name>
<Description>Grupo empresarial destino para la tasa de cambio</Description>
<AD_Process_ID>5000000</AD_Process_ID>
<SeqNo>10</SeqNo>
<AD_Reference_ID>19</AD_Reference_ID>
<AD_Reference_Value_ID>157</AD_Reference_Value_ID>
<DefaultValue></DefaultValue>
<IsMandatory>Y</IsMandatory>
<RangeHigh>0</RangeHigh>
<RangeLow>0</RangeLow>
<Value>AD_Client_ID</Value>
</Record>
</Table>
</Step>
<Step seqNo="30" type="D" name="Create Process Parameter C_ConversionType_ID">
<Table name="AD_Process_Para">
<Record>
<AD_Process_Para_ID>5000001</AD_Process_Para_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>Currency Conversion Type</Name>
<Description>Tipo de conversión de moneda (Spot, Corporate, etc.)</Description>
<AD_Process_ID>5000000</AD_Process_ID>
<SeqNo>20</SeqNo>
<AD_Reference_ID>19</AD_Reference_ID>
<AD_Reference_Value_ID>232</AD_Reference_Value_ID>
<DefaultValue>@SQL=SELECT C_ConversionType_ID FROM C_ConversionType WHERE IsDefault='Y' AND AD_Client_ID IN (0, @AD_Client_ID@) ORDER BY AD_Client_ID DESC LIMIT 1</DefaultValue>
<IsMandatory>N</IsMandatory>
<RangeHigh>0</RangeHigh>
<RangeLow>0</RangeLow>
<Value>C_ConversionType_ID</Value>
</Record>
</Table>
</Step>
<Step seqNo="40" type="D" name="Create Process Parameter DateFrom">
<Table name="AD_Process_Para">
<Record>
<AD_Process_Para_ID>5000002</AD_Process_Para_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>Date From</Name>
<Description>Fecha de inicio para buscar tasas de cambio. Si no se indica, usa la fecha actual.</Description>
<AD_Process_ID>5000000</AD_Process_ID>
<SeqNo>30</SeqNo>
<AD_Reference_ID>16</AD_Reference_ID>
<DefaultValue>@#Date@</DefaultValue>
<IsMandatory>N</IsMandatory>
<RangeHigh>0</RangeHigh>
<RangeLow>0</RangeLow>
<Value>DateFrom</Value>
</Record>
</Table>
</Step>
<Step seqNo="50" type="D" name="Create Process Parameter DateTo">
<Table name="AD_Process_Para">
<Record>
<AD_Process_Para_ID>5000003</AD_Process_Para_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>Date To</Name>
<Description>Fecha de fin para buscar tasas de cambio. Si no se indica, usa la fecha actual.</Description>
<AD_Process_ID>5000000</AD_Process_ID>
<SeqNo>40</SeqNo>
<AD_Reference_ID>16</AD_Reference_ID>
<DefaultValue>@#Date@</DefaultValue>
<IsMandatory>N</IsMandatory>
<RangeHigh>0</RangeHigh>
<RangeLow>0</RangeLow>
<Value>DateTo</Value>
</Record>
</Table>
</Step>
<Step seqNo="60" type="D" name="Create Process Parameter IsSimulation">
<Table name="AD_Process_Para">
<Record>
<AD_Process_Para_ID>5000004</AD_Process_Para_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>Simulation</Name>
<Description>Si está marcado, el proceso solo muestra qué haría sin grabar datos</Description>
<AD_Process_ID>5000000</AD_Process_ID>
<SeqNo>50</SeqNo>
<AD_Reference_ID>20</AD_Reference_ID>
<DefaultValue>N</DefaultValue>
<IsMandatory>N</IsMandatory>
<RangeHigh>0</RangeHigh>
<RangeLow>0</RangeLow>
<Value>IsSimulation</Value>
</Record>
</Table>
</Step>
<Step seqNo="70" type="D" name="Create Schedule for BCV Rate Update">
<Table name="AD_Schedule">
<Record>
<AD_Schedule_ID>5000000</AD_Schedule_ID>
<AD_Client_ID>0</AD_Client_ID>
<AD_Org_ID>0</AD_Org_ID>
<IsActive>Y</IsActive>
<Created>2026-06-22</Created>
<CreatedBy>100</CreatedBy>
<Updated>2026-06-22</Updated>
<UpdatedBy>100</UpdatedBy>
<Name>BCV_DailyRateUpdate</Name>
<Description>Actualización diaria de tasa BCV - Lunes a Viernes 16:00-23:00 cada 15 min</Description>
<ScheduleType>C</ScheduleType>
<CronPattern>0 0/15 16-23 * * 1-5</CronPattern>
<Frequency>15</Frequency>
<FrequencyType>M</FrequencyType>
<IsIgnoreProcessingTime>Y</IsIgnoreProcessingTime>
<IsSystemSchedule>Y</IsSystemSchedule>
<AD_Process_ID>5000000</AD_Process_ID>
</Record>
</Table>
</Step>
</AD_Migration>
</Application>
</Migration>
+94
View File
@@ -0,0 +1,94 @@
-- ============================================
-- BCV Exchange Rate Plugin - Registro en iDempiere
-- ============================================
-- Ejecutar este script en la base de datos de iDempiere
-- ANTES de instalar el plugin OSGi
-- ============================================
-- 1. Crear el Proceso
INSERT INTO AD_Process (
AD_Process_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Value, Description, Help, Classname,
AccessLevel, EntityType, IsDirectPrint, IsReport, IsServerProcess, ShowHelp
) VALUES (
5000000, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'BCV_ExchangeRateUpdate', 'BCV_ExchangeRateUpdate',
'Actualización automática de tasa de cambio oficial BCV (USD/VES)',
'Obtiene la tasa de cambio oficial del Banco Central de Venezuela y la registra en C_Conversion_Rate.',
'com.venezuela.bcvrate.process.BCVExchangeRateProcess',
'4', 'U', 'N', 'N', 'Y', 'L'
)
ON CONFLICT (AD_Process_ID) DO NOTHING;
-- 2. Parámetro: AD_Client_ID (Grupo Empresarial)
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, ColumnName, Description, AD_Process_ID, SeqNo,
AD_Reference_ID, AD_Reference_Value_ID, IsMandatory, DefaultValue,
FieldLength, IsRange
) VALUES (
5000000, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'Client', 'AD_Client_ID', 'Grupo empresarial destino',
5000000, 10, 19, 157, 'Y', '', 10, 'N'
)
ON CONFLICT (AD_Process_Para_ID) DO NOTHING;
-- 3. Parámetro: C_ConversionType_ID (Tipo de Conversión)
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, ColumnName, Description, AD_Process_ID, SeqNo,
AD_Reference_ID, AD_Reference_Value_ID, IsMandatory, DefaultValue,
FieldLength, IsRange
) VALUES (
5000001, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'Currency Conversion Type', 'C_ConversionType_ID', 'Tipo de conversión (Spot, Corporate, etc.)',
5000000, 20, 19, 232, 'N', '', 10, 'N'
)
ON CONFLICT (AD_Process_Para_ID) DO NOTHING;
-- 4. Parámetro: DateFrom (Fecha Desde)
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, ColumnName, Description, AD_Process_ID, SeqNo,
AD_Reference_ID, IsMandatory, DefaultValue,
FieldLength, IsRange
) VALUES (
5000002, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'Date From', 'DateFrom', 'Fecha inicio (default: hoy)',
5000000, 30, 16, 'N', '@#Date@', 10, 'N'
)
ON CONFLICT (AD_Process_Para_ID) DO NOTHING;
-- 5. Parámetro: DateTo (Fecha Hasta)
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, ColumnName, Description, AD_Process_ID, SeqNo,
AD_Reference_ID, IsMandatory, DefaultValue,
FieldLength, IsRange
) VALUES (
5000003, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'Date To', 'DateTo', 'Fecha fin (default: hoy)',
5000000, 40, 16, 'N', '@#Date@', 10, 'N'
)
ON CONFLICT (AD_Process_Para_ID) DO NOTHING;
-- 6. Parámetro: IsSimulation (Modo Simulación)
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, ColumnName, Description, AD_Process_ID, SeqNo,
AD_Reference_ID, IsMandatory, DefaultValue,
FieldLength, IsRange
) VALUES (
5000004, 0, 0, 'Y', CURRENT_TIMESTAMP, 100, CURRENT_TIMESTAMP, 100,
'Simulation', 'IsSimulation', 'Si está marcado, solo muestra qué haría sin grabar',
5000000, 50, 20, 'N', 'N', 1, 'N'
)
ON CONFLICT (AD_Process_Para_ID) DO NOTHING;
-- ============================================
-- NOTA: El Scheduler se crea manualmente en iDempiere:
-- Ir a: Procesos > Scheduler > Nuevo
-- Nombre: BCV_DailyRateUpdate
-- Patrón Cron: 0 0/15 16-23 * * 1-5
-- Proceso: BCV_ExchangeRateUpdate
-- ============================================
+90
View File
@@ -0,0 +1,90 @@
-- ============================================================
-- BCV Exchange Rate Process Registration for iDempiere v10
-- ============================================================
-- 1. Register the Process
INSERT INTO AD_Process (
AD_Process_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Value, Description, Help, ClassName, IsReport, IsDirectPrint,
IsServerProcess, IsBetaFunctionality, AccessLevel
) VALUES (
50001, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'BCV Exchange Rate Update',
'BCVExchangeRate',
'Fetches USD/VES exchange rate from BCV official API and registers it',
'Connects to BCV API to get the latest USD/VES exchange rate.',
'com.venezuela.bcvrate.process.BCVExchangeRateProcess',
'N', 'N', 'Y', 'N', '3'
);
-- 2. Register Process Parameters
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, AD_Process_ID, AD_Reference_ID, AD_Val_Rule_ID,
IsMandatory, IsRange, FieldLength, DefaultValue, SeqNo,
IsEncrypted, IsCentrallyMaintained, EntityType
) VALUES (
50001, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'Client', 'Client for this installation',
50001, 18, 100,
'Y', 'N', 0, '@#AD_Client_ID@', 10,
'N', 'Y', 'D'
);
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, AD_Process_ID, AD_Reference_ID, AD_Val_Rule_ID,
IsMandatory, IsRange, FieldLength, DefaultValue, SeqNo,
IsEncrypted, IsCentrallyMaintained, EntityType
) VALUES (
50002, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'Conversion Type', 'Currency conversion type',
50001, 18, 153,
'Y', 'N', 0, 'S', 20,
'N', 'Y', 'D'
);
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, AD_Process_ID, AD_Reference_ID,
IsMandatory, IsRange, FieldLength, DefaultValue, SeqNo,
IsEncrypted, IsCentrallyMaintained, EntityType
) VALUES (
50003, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'Date From', 'Start date for rate lookup',
50001, 16,
'N', 'N', 0, '@#Date@', 30,
'N', 'Y', 'D'
);
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, AD_Process_ID, AD_Reference_ID,
IsMandatory, IsRange, FieldLength, DefaultValue, SeqNo,
IsEncrypted, IsCentrallyMaintained, EntityType
) VALUES (
50004, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'Date To', 'End date for rate lookup',
50001, 16,
'N', 'N', 0, '@#Date@', 40,
'N', 'Y', 'D'
);
INSERT INTO AD_Process_Para (
AD_Process_Para_ID, AD_Client_ID, AD_Org_ID, IsActive, Created, CreatedBy, Updated, UpdatedBy,
Name, Description, AD_Process_ID, AD_Reference_ID,
IsMandatory, IsRange, FieldLength, DefaultValue, SeqNo,
IsEncrypted, IsCentrallyMaintained, EntityType
) VALUES (
50005, 0, 0, 'Y', CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0,
'Simulation Mode', 'Run in simulation mode - no actual changes saved',
50001, 28,
'N', 'N', 0, 'N', 50,
'N', 'Y', 'D'
);
-- 3. Verify
SELECT p.Name, p.ClassName,
(SELECT COUNT(*) FROM AD_Process_Para pp WHERE pp.AD_Process_ID = p.AD_Process_ID) as Params
FROM AD_Process p WHERE p.ClassName = 'com.venezuela.bcvrate.process.BCVExchangeRateProcess';