189 lines
5.7 KiB
JavaScript
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 |