Created
June 13, 2022 06:05
-
-
Save hnestmann/e049139124a0d6af0722cabc863e745f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Input: Line separated SKUs (e.g grepped from catalog export), inventory export | |
* Output: inventory import of all 0 item items | |
* | |
* Original use case: customer shows Back-in-Stock only if item has zero item inventory, however production cleaned 0 to null removing bis | |
*/ | |
const fs = require('fs'); | |
var readlines = require('n-readlines') | |
var myArgs = process.argv.slice(2); | |
var argsObject = {}; | |
myArgs.forEach((element) => { | |
if (element.startsWith('--')) { | |
argsObject[element.substring(2)] = ''; | |
argsObject.lastKey = element.substring(2); | |
} else { | |
argsObject[argsObject.lastKey] += element; | |
} | |
}) | |
main(argsObject) | |
function main(parameters) { | |
console.info("Start Reading"); | |
var liner = new readlines(parameters.source); | |
console.info("Finished Reading"); | |
fs.writeFileSync('target/customers.xml', | |
'<customers xmlns="http://www.demandware.com/xml/impex/customer/2006-10-31">', (err) => { console.error(err); }); | |
var currentCustomerNo = null; | |
var currentCustomerXML = ''; | |
var currentAddressID = ''; | |
var addressCandidate = ''; | |
var traceMap = false; | |
var persistAddress = false; | |
var brokenCustomer = 0; | |
var brokenCustomer2 = 0; | |
var customer = 0; | |
var houseNoRegex = /<custom-attribute attribute-id="houseNumber">(.*)<\/custom-attribute>/ | |
var multiLineAddressesRegrexp = /(.*[\s\S]*?)(<addresses.*[\s\S]*?<\/addresses>)/g; | |
var multiLineAddressRegrexp = /.*<address.*[\s\S]*?<\/address>/g; | |
var addressLine1Regexp = /<address1>(.*)<\/address1>/; | |
i = 0; | |
while (next = liner.next()) { | |
var line = next.toString('utf8'); | |
if (line.includes('<customer customer-no="')) { | |
if (currentCustomerXML) { | |
var addresses = currentCustomerXML.split('<address address-id'); | |
var newAddresses = [] | |
addresses = addresses.map(address => { | |
if (address.match(houseNoRegex)) { | |
address = address.replace(' ' + address.match(houseNoRegex)[1] + '</address1>', '</address1>') | |
} | |
return address; | |
}); | |
if (currentCustomerXML.match(multiLineAddressesRegrexp)) { | |
currentCustomerXML = currentCustomerXML.match(multiLineAddressesRegrexp)[1] + addresses.join('<address address-id') | |
} | |
if (currentCustomerXML) { | |
fs.appendFileSync('target/customers.xml', currentCustomerXML + '\n'); | |
} | |
} | |
currentCustomerXML = ''; | |
currentCustomerNo = line.match(/<customer customer-no="(.*)"/)[1] | |
customer++; | |
} | |
if (currentCustomerNo) { | |
currentCustomerXML += line + '\n'; | |
} | |
i++; | |
if (i > 20000) { | |
// break | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment