from log import log, cleanLogs from timeOperations import isInboundShipmentPlanWithinSpecifiedDelta from amazonAPI import getAccessToken, getInboundShipmentData, getInboundShipmentPlans, getInboundShipmentPlan, getProductName from sentNotifications import isInboundShipmentPlanIDInSentNotifications, updateSentNotifications from discordNotifications import sendDiscordNotification def parseInboundShipmentPlans(): log('\U0001F504 Getting inbound shipment plans...', 'info') inboundShipmentPlans = getInboundShipmentPlans() inboundShipmentPlanIDs = [] inboundShipmentPlanData = {} for plan in inboundShipmentPlans: if isInboundShipmentPlanWithinSpecifiedDelta(plan['createdAt']): log('Adding inbound shipment plan to list: {}'.format(plan['inboundPlanId']), 'info') inboundShipmentPlanIDs.append(plan['inboundPlanId']) inboundShipmentPlanData.update({plan['inboundPlanId']: {'creationDate': plan['createdAt']}}) if inboundShipmentPlanIDs: log('\U0001F440 Checking inbound shipment plans...', 'info') log(f'Shipments to check: {len(inboundShipmentPlanIDs)}', 'info') for inboundShipmentPlanID in inboundShipmentPlanIDs: if isInboundShipmentPlanIDInSentNotifications(inboundShipmentPlanID): log(f'Ignoring inbound shipment plan {inboundShipmentPlanID}, notification has already been sent', 'info') elif not isInboundShipmentPlanIDInSentNotifications(inboundShipmentPlanID): inboundShipmentPlan = getInboundShipmentPlan(inboundShipmentPlanID) if inboundShipmentPlan['items']: itemDict = {} totalItemCount = 0 for item in inboundShipmentPlan['items']: productName = getProductName(item['msku']) itemDict.update({productName: item.get('quantity')}) totalItemCount += item['quantity'] itemDict.update({'Total unit count': totalItemCount}) inboundShipmentPlanData[inboundShipmentPlanID]['contents'] = itemDict inboundShipmentData = getInboundShipmentData(inboundShipmentPlanID) inboundShipmentPlanData[inboundShipmentPlanID]['destinations'] = inboundShipmentData[inboundShipmentPlanID]['destinations'] inboundShipmentPlanData[inboundShipmentPlanID]['shipmentIDs'] = inboundShipmentData[inboundShipmentPlanID]['shipmentIDs'] log(f'\U0001F514 Sending Discord notification for {inboundShipmentPlanID}...', 'info') sendDiscordNotification(inboundShipmentPlanID, inboundShipmentPlanData[inboundShipmentPlanID]) updateSentNotifications(inboundShipmentPlanID) if __name__ == '__main__': cleanLogs() parseInboundShipmentPlans()