v1.0.11 - Plugin BCV Exchange Rate para iDempiere v10
This commit is contained in:
@@ -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>
|
||||
@@ -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
|
||||
-- ============================================
|
||||
@@ -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';
|
||||
Reference in New Issue
Block a user