savestate before github

This commit is contained in:
Rene Kaßeböhmer
2025-07-09 11:15:51 +02:00
parent 294c640096
commit b09b136ad7
14 changed files with 392 additions and 26 deletions

View File

@ -0,0 +1 @@
python link_ids_and_create_maintenanceassets.py --context qa2 --csv MaintenanceAsset.csv

View File

@ -0,0 +1,81 @@
import pandas as pd
import os
from sys import path
import argparse
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: MaintenanceAsset.csv)')
args = parser.parse_args()
df_s_servicecontracts = pd.read_csv("../16_insert_servicecontract/successful_records.csv")
df_s_maintenanceplans = pd.read_csv("../20_create_maintenance_plan/successful_records.csv")
df_maintenanceasset_before = pd.read_csv("MaintenanceAsset_beforetransform.csv")
asset_update_path = os.path.join("..", "9_upsert_assets", "target", "Asset_update_target.csv")
if os.path.exists(asset_update_path):
df_asset_update = pd.read_csv(asset_update_path)
else:
df_asset_update = None
asset_insert_path = os.path.join("..", "9_upsert_assets", "target", "Asset_insert_target.csv")
if os.path.exists(asset_insert_path):
df_asset_insert = pd.read_csv(asset_insert_path)
else:
df_asset_insert = None
# Merge the two DataFrames on PKey__c from df_s_servicecontracts and Contract__c from df_s_maintenanceplans
merged_df = pd.merge(
df_s_servicecontracts[['sf__Id', 'PKey__c']],
df_s_maintenanceplans[['sf__Id', 'ServiceContractId']],
left_on='sf__Id',
right_on='ServiceContractId',
how='inner',
suffixes=('_servicecontract', '_maintenanceplan')
)
# Create a new DataFrame with only the desired columns
result_df = merged_df[['sf__Id_maintenanceplan', 'sf__Id_servicecontract', 'PKey__c']]
# Merge the sf__Id_maintenanceplan and sf__Id_servicecontract into df_maintenanceasset_before based on PKey__c
df_maintenanceasset_before = pd.merge(
df_maintenanceasset_before,
result_df,
left_on='ServiceContract.PKey__c',
right_on='PKey__c',
how='left'
)
# Find Asset Ids from df_asset_update and df_asset_insert using PKey__c and InstalledBase__c
def find_asset_id(row):
asset_id = None
if df_asset_update is not None:
match = df_asset_update[df_asset_update['PKey__c'] == row['InstalledBase__c']]
if not match.empty:
asset_id = match.iloc[0]['Id']
if asset_id is None and df_asset_insert is not None:
match = df_asset_insert[df_asset_insert['PKey__c'] == row['InstalledBase__c']]
if not match.empty:
asset_id = match.iloc[0]['Id']
return asset_id
df_maintenanceasset_before['AssetId'] = df_maintenanceasset_before.apply(find_asset_id, axis=1)
df_maintenanceasset_before.drop(columns=['PKey__c'], inplace=True)
df_maintenanceasset_before.drop(columns=['InstalledBase__c'], inplace=True)
df_maintenanceasset_before.drop(columns=['ServiceContract.PKey__c'], inplace=True)
df_maintenanceasset_before.rename(columns={'sf__Id_maintenanceplan': 'MaintenancePlanId', 'sf__Id_servicecontract': 'ServiceContractId'}, inplace=True)
#safe csv
df_maintenanceasset_before.to_csv('./MaintenanceAsset.csv', index=False)
#insert records
bulk_insert_records(args.context, 'MaintenanceAsset', args.csv)