flechtware_generateTracking.../jtlsql.js

189 lines
5.7 KiB
JavaScript

const sql = require('mssql');
const MSSQL_CONFIG = require('./config').MSSQL_CONFIG
const DRY_RUN = require('./config').DRY_RUN
class JtlSql {
async getOrderOnLiefBest(liefBestNr) {
try {
const auftrag = await this.getBezugsAuftragsNrOnLiefBestNr(liefBestNr)
if (!auftrag) return null
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('cBestellNr', sql.VarChar, auftrag.cBezugsAuftragsNummer);
const query = `SELECT * FROM tBestellung WHERE cBestellNr = @cBestellNr`;
const result = await request.query(query);
return result.recordset[0]
} catch (error) {
console.error('Error fetching BezugsAuftragsNummer:', error);
return null;
}
}
async getBezugsAuftragsNrOnLiefBestNr(liefBestNr) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('liefBestNr', sql.VarChar, liefBestNr);
const query = `SELECT cBezugsAuftragsNummer FROM tLieferantenBestellung WHERE cEigeneBestellnummer = @liefBestNr`;
const result = await request.query(query);
return result.recordset[0]
} catch (error) {
console.error('Error fetching BezugsAuftragsNummer:', error);
return null;
}
}
async getLieferscheinOnAuftragsnummer(auftragsNummer) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('auftragsNummer', sql.VarChar, auftragsNummer+'%');
const query = `
SELECT TOP 1 *
FROM tLieferschein
WHERE cLieferscheinNr LIKE @auftragsNummer
`;
const result = await request.query(query);
return result.recordset[0]|| null;
} catch (error) {
console.error('Error fetching Lieferschein:', error);
return null;
}
}
async getVersandPaketeOnLieferscheinId(kLieferschein) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('kLieferschein', sql.Int, kLieferschein);
const query = `
SELECT * FROM tVersand
WHERE kLieferschein = @kLieferschein
`;
const result = await request.query(query);
return result.recordset
} catch (error) {
console.error('Error fetching Versand:', error);
return null;
}
}
async saveVersandPaket(paket) {
if ('kVersand' in paket) {
return await this.updateVersandPaket(paket)
} else {
return await this.insertVersandPaket(paket)
}
}
async insertVersandPaket(paket) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('kLieferschein', sql.Int, paket.kLieferschein);
request.input('kBenutzer', sql.Int, paket.kBenutzer);
request.input('kLogistik', sql.Int, paket.kLogistik);
request.input('kVersandArt', sql.Int, paket.kVersandArt);
request.input('cIdentCode', sql.VarChar, paket.cIdentCode.toString());
request.input('cEnclosedReturnIdentCode', sql.VarChar, paket.cEnclosedReturnIdentCode.toString());
request.input('dVersendet', sql.DateTime, paket.dVersendet);
request.input('nStatus', sql.TinyInt, paket.nStatus);
const query = `
INSERT INTO tVersand
(kLieferschein, kBenutzer, kLogistik, nStatus, kVersandArt, cIdentCode, cEnclosedReturnIdentCode, dVersendet)
VALUES
(@kLieferschein, @kBenutzer, @kLogistik, @nStatus, @kVersandArt, @cIdentCode, @cEnclosedReturnIdentCode, @dVersendet)
`;
let fullQuery = DRY_RUN
? `BEGIN TRANSACTION;\n${query}\nROLLBACK TRANSACTION;`
: query;
const result = await request.query(fullQuery);
return result.rowsAffected[0]
} catch (error) {
throw error
}
}
async updateVersandPaket(paket) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('kVersand', sql.Int, paket.kVersand);
request.input('kLieferschein', sql.Int, paket.kLieferschein);
request.input('cIdentCode', sql.VarChar, paket.cIdentCode ? paket.cIdentCode.toString() : null);
request.input('cEnclosedReturnIdentCode', sql.VarChar, paket.cEnclosedReturnIdentCode ? paket.cEnclosedReturnIdentCode.toString() : null);
request.input('dVersendet', sql.DateTime, paket.dVersendet);
request.input('nStatus', sql.TinyInt, paket.nStatus);
const query = `
UPDATE tVersand SET
kLieferschein = @kLieferschein,
nStatus = @nStatus,
cIdentCode = @cIdentCode,
cEnclosedReturnIdentCode = @cEnclosedReturnIdentCode,
dVersendet = @dVersendet
WHERE
kVersand = @kVersand
`;
let fullQuery = DRY_RUN
? `BEGIN TRANSACTION;\n${query}\nROLLBACK TRANSACTION;`
: query;
const result = await request.query(fullQuery);
return result.rowsAffected[0]
} catch (error) {
throw error
}
}
async getAdresse(kAdresse) {
try {
await sql.connect(MSSQL_CONFIG);
const request = new sql.Request();
request.input('kAdresse', sql.Int, kAdresse);
const query = `SELECT * FROM tAdresse WHERE kAdresse = @kAdresse`;
const result = await request.query(query);
return result.recordset[0]
} catch (error) {
throw error
}
}
}
module.exports = JtlSql