maintenance plan first draft without rights test

This commit is contained in:
Rene Kaßeböhmer
2025-06-20 14:21:50 +02:00
parent 39fb8a759b
commit 150e086902
5 changed files with 89 additions and 3 deletions

View File

@ -0,0 +1 @@
python fill_fields_and_insert.py --context qa2 --csv MaintenancePlan.csv

View File

@ -0,0 +1,16 @@
{
"allOrNone": true,
"objects": [
{
"query": "SELECT Id FROM ServiceContract WHERE IsTemplate__c = true",
"operation": "Readonly",
"externalId": "Id",
"master": false
},{
"query": "SELECT Id, TemplateId__c FROM ServiceContract",
"operation": "Update",
"externalId": "Id",
"useSourceCSVFile": true
}
]
}

View File

@ -0,0 +1,62 @@
import pandas as pd
import argparse
from sys import path
path.append('../..')
from utils import bulk_insert_records
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Insert MaintenancePlan records via Bulk API')
parser.add_argument('--context', type=str, required=True,
help='Salesforce org context (e.g., "qa2", "prod")')
parser.add_argument('--csv', type=str, default='MaintenancePlan.csv',
help='CSV file to process (default: MaintenancePlan.csv)')
args = parser.parse_args()
#read_df_sc = pd.read_csv('../16_insert_servicecontract/successful_records.csv', header=0, keep_default_na=False, dtype=str)
read_df_mp = pd.read_csv('./MaintenancePlan_beforetransform.csv', header=0, keep_default_na=False, dtype=str)
#"sf__Id","sf__Created",PKey__c,BillingCountryCode,Term,EndDate,StartDate,AccountId,Service_Recipient__c,IoT_Registration_Status__c,Name,Pricebook2Id,TemplateId__c
#reindex_columns_sc = ['sf__Id','sf__Created','PKey__c', 'BillingCountryCode', 'Term', 'EndDate', 'StartDate', 'AccountId', 'Service_Recipient__c', 'IoT_Registration_Status__c', 'Name', 'Pricebook2Id', 'TemplateId__c']
#ServiceContract.PKey__c,StartDate,EndDate,AccountId,MaintenanceWindowEndDays,MaintenanceWindowStartDays,GenerationTimeframe,Frequency,GenerationTimeframeType,WorkTypeId
reindex_columns_mp = ['ServiceContract.PKey__c', 'StartDate', 'EndDate', 'AccountId', 'MaintenanceWindowEndDays', 'MaintenanceWindowStartDays', 'GenerationTimeframe', 'Frequency', 'GenerationTimeframeType', 'WorkTypeId']
# Reindex the columns to match the desired format
#df_sc = read_df_sc.reindex(reindex_columns_sc, axis=1)
df_mp = read_df_mp.reindex(reindex_columns_mp, axis=1)
# Only load 'sf__Id' and 'PKey__c' from the ServiceContract CSV
df_sc = pd.read_csv('../16_insert_servicecontract/successful_records.csv', usecols=['sf__Id', 'PKey__c'])
print(df_sc)
print(df_mp)
#
# Merge df_mp with df_sc including Id based on PKey__c
merged_df_mp = pd.merge(df_mp,
df_sc[['sf__Id', 'PKey__c']],
left_on='ServiceContract.PKey__c',
right_on='PKey__c',
how='left')
print(merged_df_mp)
# Rename only 'old_name' to 'new_name'
merged_df_mp = merged_df_mp.rename(columns={'sf__Id': 'ServiceContractId'})
merged_df_mp = merged_df_mp.drop('ServiceContract.PKey__c', axis=1)
merged_df_mp = merged_df_mp.drop('PKey__c', axis=1)
#transform values into int
merged_df_mp['MaintenanceWindowEndDays'] = pd.to_numeric(merged_df_mp['MaintenanceWindowEndDays'], errors='coerce').fillna(0).astype(int)
merged_df_mp['MaintenanceWindowStartDays'] = pd.to_numeric(merged_df_mp['MaintenanceWindowStartDays'], errors='coerce').fillna(0).astype(int)
merged_df_mp['GenerationTimeframe'] = pd.to_numeric(merged_df_mp['GenerationTimeframe'], errors='coerce').fillna(0).astype(int)
merged_df_mp['Frequency'] = pd.to_numeric(merged_df_mp['Frequency'], errors='coerce').fillna(0).astype(int)
#safe csv
merged_df_mp.to_csv('./MaintenancePlan.csv', index=False)
bulk_insert_records(args.context, 'MaintenancePlan', args.csv)