It’s old hat, but every function, every class, every code unit you write, should all have a single, well-defined purpose. “Do one thing, and do it well,” as it were.
Of course, sometimes, it’s easier said that done, and mindlessly following that advice can lead to premature abstraction, and then you’ll have quite a mess on your hands. Still, it’s good advice, and a great design goal, even if you don’t head straight there.
Marigold found some code which, well, has a long way to go. A looooooong way to go.
directAddCartEntry = function (matnr, menge,updateByField,m,redu){
var that=this;
var produkt=new Object;
var target = document.getElementById('content');
spinner.spin(target);
if (produkt.BACK_PREIS!=undefined && produkt.BACK_PREIS!=""){
produkt.PREIS = produkt.BACK_PREIS
}
var Kundennummer = app.getModel("userData").getData().KUNDENNR;
var Land = app.getModel("userData").getData().LAND;
var Euland = app.getModel("userData").getData().ISTEULAND;
var Kundennummer_u_Euland = Kundennummer+"|"+Euland+"|"+Land;
var verpackungseinheit = "";
sap.ui.getCore().byId("app").getModel("kategorie").read("/PRODUKT_SET(MATNR='"+matnr+"',VKORG='"+VKORG+"',SPRAS='de',KAMPAGNE='"+Kundennummer_u_Euland+"',VTWEG='10')?$expand=MERKMAL",null,null,false,function(oData,response){
produkt=oData;
var mindestbestellmenge = produkt.BOMRABATT;
verpackungseinheit = produkt.VERPACKUNGSEINHEIT
if (mindestbestellmenge!="0.000 "&& mindestbestellmenge!="" && mindestbestellmenge != undefined){
mindestbestellmenge=mindestbestellmenge.split(".")[0]
var mindestbestellmenge = parseInt(mindestbestellmenge);
produkt.BOMRABATT=mindestbestellmenge
if (menge != mindestbestellmenge && vielfacher(menge,mindestbestellmenge)==false && redu!=true){
var dialog = new sap.m.Dialog({
showHeader: false,
content: [
new sap.ui.layout.HorizontalLayout({
content: [
new sap.m.Image({
src: "Image/helia_small.png",
}),
new sap.m.Text({
//text: sap.ui.getCore().byId("app").getModel("i18n").getProperty("dialogUsersonlyFooter")
}).addStyleClass('dialog__usersonlySmall'),
]
}).addStyleClass('dialog__usersonlyHeader'),
new sap.ui.layout.Grid({
hSpacing: 1,
vSpacing: 1,
layoutData: new sap.ui.layout.GridData({
span: "L12 M12 S12",
}),
content: [
new sap.ui.core.HTML({
layoutData: new sap.ui.layout.GridData({
span: "L12 M12 S12",
}),
content: verpackungseinheit=="ZS" ? sap.ui.getCore().byId("navContainer").getModel("i18n").getProperty("infozigarette") : sap.ui.getCore().byId("navContainer").getModel("i18n").getResourceBundle().getText("infonormal", produkt.BOMRABATT)
}).addStyleClass("dialog__usersonlyTitle"),
new sap.m.Select("dialogSelect",{
layoutData: new sap.ui.layout.GridData({
span: "L2 M2 S2",
}),
// items: productListItems2("zweier","","","")
items: productListItems4(null,null,produkt.MAXMENGE,produkt.BOMRABATT)
})/*.attachBrowserEvent(
"click",function(evt){
var _numProductsSelected = parseInt( this.getSelectedKey() );
var _i = +_numProductsSelected;
var plus=+_i;
this.destroyItems();
for (_i;_i<=999;_i=_i+plus){
// XXX
this.addItem(new sap.ui.core.ListItem({ text: _i, key: _i }))
}
this.setSelectedKey( _numProductsSelected );
}
).attachBrowserEvent(
"tap",function(evt){
var _numProductsSelected = parseInt( this.getSelectedKey() );
var _i = +_numProductsSelected;
var plus=+_i;
this.destroyItems();
for (_i;_i<=999;_i=_i+plus){
// XXX
this.addItem(new sap.ui.core.ListItem({ text: _i, key: _i }))
}
this.setSelectedKey( _numProductsSelected );
}
)*/,
new sap.m.Button({
text: "OK",
press: function(oEvent) {
var new_menge=sap.ui.getCore().byId("dialogSelect").getSelectedItem().mProperties.text
dialog.destroy();
directAddCartEntry (matnr, new_menge,updateByField,m)
simulateOrder()
directController.setPreiseundRabatte();
},
layoutData: new sap.ui.layout.GridData({
span: "L1 M1 S1",
})
}),
new sap.m.Button({
text: app.getModel("i18n").getProperty("pwdabort"),
press: function() {
dialog.destroy();
},
layoutData: new sap.ui.layout.GridData({
span: "L2 M2 S2",
})
}),
]
}),
//.addStyleClass('dialog__usersonlyChoice'),
]
}).addStyleClass('dialog__usersonlyChoice');
dialog.open()
spinner.stop();
return;
}
else{
if (istmindestmenge (oData,"","call")==true && redu!=true){
// var menge2=menge/2
var menge2=menge/oData.BOMRABATT;
directAddCartEntry (matnr, menge2,updateByField,m,true)
return
}
else{
produkt.MENGE = menge;
}
}
}else{
if (istmindestmenge (oData,"","call")==true && redu!=true){
// var menge2=menge/2
menge/oData.BOMRABATT;
directAddCartEntry (matnr, menge2,updateByField,m,true)
return
}
else{
produkt.MENGE = menge;
}
}
var Preis;
var model = m;
var data = model.getData();
var POSITIONEN = data.WK_POSITIONEN;
var POSITION = null;
var POSITIONIndex = -1;
if (produkt.BACK_PREIS!=undefined && produkt.BACK_PREIS!=""){
produkt.PREIS = produkt.BACK_PREIS
}
//Position suchen
for (var zxy = 0 ; zxy < POSITIONEN.length ; zxy ++) {
if (POSITIONEN[zxy].MATNR === produkt.MATNR) {
POSITION = POSITIONEN[zxy];
POSITIONIndex = zxy;
break;
}
}
//Wenn Position nicht gefunden, neu hinzuf?gen...
if (POSITION === null) {
produkt.PAKETPREIS = produkt.PREIS;
produkt.SPARPREIS = 0;
//Aktionsstaffelpreise und Staffelpreise ber?cksichtigen
var Preis = parseFloat(produkt.PREIS).toFixed(2);
if (produkt.STAFFELPREIS3!=""){
if( (parseFloat(produkt.MENGE) >= parseFloat(produkt.STAFFELPREIS6)) && ( parseFloat(produkt.STAFFELPREIS3) < parseFloat(produkt.PREIS) ) ) {
produkt.PAKETPREIS = produkt.STAFFELPREIS3;
produkt.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.STAFFELPREIS3));
var Preis = produkt.STAFFELPREIS3
}
}
if (produkt.AKTIONSPREIS3!=""){
if( (parseFloat(produkt.MENGE) >= parseFloat(produkt.AKTIONSPREIS6)) && ( parseFloat(produkt.AKTIONSPREIS3) < parseFloat(produkt.PREIS) ) ) {
produkt.PAKETPREIS = produkt.AKTIONSPREIS3;
produkt.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.AKTIONSPREIS3));
var Preis = produkt.AKTIONSPREIS3
}
}
if (parseFloat(produkt.AKTIONSPREIS)< parseFloat(produkt.PREIS) && produkt.AKTIONSPREIS!=""){
var Preis = parseFloat(produkt.AKTIONSPREIS).toFixed(2);
} // Vergleich Staffelpreis zu Aktionspreis, VRU 21.06.2016
if ( (parseFloat(produkt.MENGE) >= parseFloat(produkt.AKTIONSPREIS6)) && (parseFloat(produkt.AKTIONSPREIS3)<parseFloat(produkt.STAFFELPREIS3)) && produkt.AKTIONSPREIS3!=""){
var Preis = parseFloat(produkt.AKTIONSPREIS3).toFixed(2);
}
// if( (produkt.MENGE >= 6) && ( parseFloat(produkt.AKTIONSPREIS6) < parseFloat(produkt.PREIS) ) ) {
// produkt.PAKETPREIS = produkt.AKTIONSPREIS6;
// produkt.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.AKTIONSPREIS6));
// }
// if( (produkt.MENGE >= 12) && ( parseFloat(produkt.AKTIONSPREIS12) < parseFloat(produkt.PREIS) ) ) {
// produkt.PAKETPREIS = produkt.AKTIONSPREIS12;
// produkt.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.AKTIONSPREIS12));
// }
produkt.GESAMTPREIS = parseFloat(Preis * menge).toFixed(2);
// produkt.GESAMTPREIS = parseFloat(produkt.PAKETPREIS * produkt.MENGE).toFixed(2);
produkt.GESAMTSPARPREIS = produkt.SPARPREIS * produkt.MENGE;
produkt.MENGE=parseInt(produkt.MENGE);
if (redu==true){
// produkt.MENGE=produkt.MENGE*2
produkt.MENGE=produkt.MENGE*produkt.BOMRABATT
}
// create new entry
POSITION = {
MATNR:produkt.MATNR,
MAKTX:produkt.MAKTX,
MENGE:produkt.MENGE,
MAXMENGE:produkt.MAXMENGE,
KATTEXTKURZ:produkt.KATTEXTKURZ,
IMG_BIG:produkt.IMG_BIG.replace(locStatic,""),
IMG_THUMB:produkt.IMG_THUMB.replace(locStatic,""),
BACK_PREIS: produkt.PREIS,
PREIS:Preis,
GESAMTPREIS:parseFloat(produkt.GESAMTPREIS).toFixed(2),
STAFFELPREIS:produkt.STAFFELPREIS,
AKTIONSPREIS:produkt.AKTIONSPREIS,
WAEHRUNG:produkt.WAEHRUNG,
PAKETPREIS:produkt.PAKETPREIS,
SPARPREIS:produkt.SPARPREIS,
GESAMTSPARPREIS:produkt.GESAMTSPARPREIS,
AKTIONSPREIS3 : produkt.AKTIONSPREIS3,
AKTIONSPREIS6 : produkt.AKTIONSPREIS6,
STAFFELPREIS3 : produkt.STAFFELPREIS3,
STAFFELPREIS6 : produkt.STAFFELPREIS6,
BOMRABATT: produkt.BOMRABATT,
VERPACKUNGSEINHEIT:produkt.VERPACKUNGSEINHEIT
};
data.WK_POSITIONEN[data.WK_POSITIONEN.length] = POSITION;
} else {
//...Ansonsten Menge aendern
if(updateByField){
POSITION.MENGE=parseInt(POSITION.MENGE) + parseInt(produkt.MENGE)
if (redu!=undefined && redu ==true){
POSITION.MENGE = POSITION.MENGE/2 + parseInt(produkt.MENGE)/2
}
var Preis = parseFloat(produkt.PREIS).toFixed(2);
if (produkt.STAFFELPREIS3!=""){
if( (parseFloat(POSITION.MENGE) >= parseFloat(produkt.STAFFELPREIS6)) && ( parseFloat(produkt.STAFFELPREIS3) < parseFloat(produkt.PREIS) ) ) {
POSITION.PAKETPREIS = produkt.STAFFELPREIS3;
POSITION.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.STAFFELPREIS3));
var Preis = produkt.STAFFELPREIS3
}
}
if (produkt.AKTIONSPREIS3!=""){
if( (parseFloat(POSITION.MENGE) >= parseFloat(produkt.AKTIONSPREIS6)) && ( parseFloat(produkt.AKTIONSPREIS3) < parseFloat(produkt.PREIS) ) ) {
POSITION.PAKETPREIS = produkt.AKTIONSPREIS3;
POSITION.SPARPREIS = ( parseFloat(produkt.PREIS) - parseFloat(produkt.AKTIONSPREIS3));
var Preis = produkt.AKTIONSPREIS3
}
}
if (parseFloat(produkt.AKTIONSPREIS)< parseFloat(produkt.PREIS) && produkt.AKTIONSPREIS!=""){
var Preis = parseFloat(produkt.AKTIONSPREIS).toFixed(2);
}
// Vergleich Staffelpreis zu Aktionspreis, VRU 21.06.2016
if ( (parseFloat(POSITION.MENGE) >= parseFloat(produkt.AKTIONSPREIS6)) && (parseFloat(produkt.AKTIONSPREIS3)<parseFloat(produkt.STAFFELPREIS3)) && produkt.AKTIONSPREIS3!=""){
var Preis = parseFloat(produkt.AKTIONSPREIS3).toFixed(2);
}
POSITION.AKTIONSPREIS3 = produkt.AKTIONSPREIS3
POSITION.AKTIONSPREIS6 = produkt.AKTIONSPREIS6
POSITION.STAFFELPREIS3 = produkt.STAFFELPREIS3
POSITION.STAFFELPREIS6 = produkt.STAFFELPREIS6
POSITION.BACK_PREIS= produkt.PREIS,
POSITION.PREIS = parseFloat(Preis).toFixed(2);
POSITION.AKTIONSPREIS6 = produkt.AKTIONSPREIS6;
POSITION.AKTIONSPREIS12 = produkt.AKTIONSPREIS12;
POSITION.PAKETPREIS = POSITION.PREIS;
POSITION.SPARPREIS = 0;
// if( (POSITION.MENGE >= 6) && ( parseFloat(POSITION.AKTIONSPREIS6) < parseFloat(POSITION.PREIS) ) ) {
// POSITION.PAKETPREIS = POSITION.AKTIONSPREIS6;
// POSITION.SPARPREIS = ( parseFloat(POSITION.PREIS) - parseFloat(POSITION.AKTIONSPREIS6));
// }
// if( (POSITION.MENGE >= 12) && ( parseFloat(POSITION.AKTIONSPREIS12) < parseFloat(POSITION.PREIS) ) ) {
// POSITION.PAKETPREIS = POSITION.AKTIONSPREIS12;
// POSITION.SPARPREIS = ( parseFloat(POSITION.PREIS) - parseFloat(POSITION.AKTIONSPREIS12));
// }
POSITION.GESAMTPREIS = parseFloat(POSITION.MENGE*POSITION.PAKETPREIS).toFixed(2);
POSITION.GESAMTSPARPREIS = POSITION.MENGE*POSITION.SPARPREIS;
POSITION.STAFFELPREIS = produkt.STAFFELPREIS;
POSITION.AKTIONSPREIS = produkt.AKTIONSPREIS;
POSITION.WAEHRUNG = produkt.WAEHRUNG;
if (redu!=undefined && redu ==true){
// POSITION.MENGE = POSITION.MENGE*2
POSITION.MENGE = POSITION.MENGE*POSITION.BOMRABATT
}
}else{
}
POSITION.AKTIONSPREIS3 = produkt.AKTIONSPREIS3
POSITION.AKTIONSPREIS6 = produkt.AKTIONSPREIS6
POSITION.STAFFELPREIS3 = produkt.STAFFELPREIS3
POSITION.STAFFELPREIS6 = produkt.STAFFELPREIS6
POSITION.BOMRABATT = produkt.BOMRABATT
POSITION.BACK_PREIS= produkt.PREIS,
POSITION.PREIS = Preis;
POSITION.GESAMTPREIS= toFixed(POSITION.GESAMTPREIS,2);
POSITION.GESAMTSPARPREIS= toFixed(POSITION.GESAMTSPARPREIS,2);
POSITIONEN[POSITIONIndex] = POSITION;
data.WK_POSITIONEN = POSITIONEN;
}
// Gesamtpreis neu berechnen
data.GESAMTPREIS = 0;
data.GESAMTMENGE = 0;
data.ZWISCHENSUMME = 0;
data.GESAMTSPARPREIS = 0;
for (var xxy = 0 ; xxy < data.WK_POSITIONEN.length ; xxy ++) {
data.GESAMTPREIS += parseFloat(data.WK_POSITIONEN[xxy].GESAMTPREIS);
if (istmindestmenge (data.WK_POSITIONEN[xxy],"","call")==true && redu==true){
data.GESAMTMENGE += parseInt(data.WK_POSITIONEN[xxy].MENGE);
}else{
data.GESAMTMENGE += parseInt(data.WK_POSITIONEN[xxy].MENGE);
}
//hier Gesamtmenge wieder erhoehen
data.ZWISCHENSUMME += parseFloat(data.WK_POSITIONEN[xxy].GESAMTPREIS);
data.GESAMTSPARPREIS += parseFloat(data.WK_POSITIONEN[xxy].GESAMTSPARPREIS);
}
data.GESAMTPREIS = parseFloat(data.GESAMTPREIS).toFixed(2)
data.GESAMTSPARPREIS = parseFloat(data.GESAMTSPARPREIS).toFixed(2);
// data.INTERNETRABATT = parseFloat(menge) + parseFloat(menge)
// data.GESAMTPREIS= parseFloat(data.GESAMTPREIS).toFixed(2);
data.ENDPREIS=parseFloat(data.GESAMTPREIS).toFixed(2) - parseFloat(data.INTERNETRABATT).toFixed(2);
data.ZWISCHENSUMME= toFixed(data.ZWISCHENSUMME,2);
data.GESAMTSPARPREIS= toFixed(data.GESAMTSPARPREIS,2);
data.ERSATZLIEFERUNG = data.ERSATZLIEFERUNG;
data.LIEFERART=data.LIEFERART;
data.LIEFERDATUM = data.LIEFERDATUM;
data.KUNDENNACHRICHT=data.KUNDENNACHRICHT;
// if(parseFloat(oData.INTERNETRABATT)>0){
// //sap.ui.getCore().byId("app").getModel("warenkorb").setProperty("/INTERNETRABATT",parseFloat(oData.INTERNETRABATT).toFixed(2));
// sap.ui.getCore().byId("app").getModel("warenkorb").setProperty("/ENDPREIS",(parseFloat(sap.ui.getCore().byId("app").getModel("warenkorb").getProperty("/GESAMTPREIS")) - parseFloat(oData.INTERNETRABATT)).toFixed(2));
// }
// // Model updaten
model.setData(data,"warenkorb");
if($.cookie("cookieUser")!=undefined){
setBackendWK(sap.ui.getCore().byId("app").getModel("kategorie"),sap.ui.getCore().byId("app").getModel("userData").oData.KUNDENNR);
}else{
setCookieCart(model);
}
if (redu==true){
// menge=menge*2;
menge=menge*produkt.BOMRABATT;
}
showToastMessage(menge,produkt.MAKTX,produkt.MERKMAL.results);
//Speichern des Warenkorbes in einen Cookie
simulateOrder();
spinner.stop();
},function(oError){
spinner.stop();
messageToast(app.getModel("i18n").getProperty("keineWare"));
});
};
Marigold adds: “I have no words for this. Make something up. I don’t care.”
It isn’t about what this code does, as much as the sheer mass of it, the weight of 350+ lines of code in one gigantic method which seems to do everything, makes me want to do nothing but eat a box of “einen Cookies” in one sitting.