diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index f39bf78ac6421e0d3b62894c5cc77441db549945..0665a167aa408eef97b9cca65ce8beab042c8ee4 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -56,7 +56,7 @@ OfferUtils.getOfferNumberValidationFailString = function() { } OfferUtils.isEditable = function(status) { - // TODO: Administrator darf immer ändern, warten auf neue Berechtigungslogik? + // TODO: Administrator darf immer �ndern, warten auf neue Berechtigungslogik? // Offer should be editable if offer state not equals "Sent", "Won" or "Lost" return status != "2" && status != "3" && status != "4"; @@ -90,25 +90,53 @@ OfferUtils.openOfferReport = function(pOfferID) { var offerReport = new Report("RPTJ_OFFER"); + var sqlUtil = new SqlMaskingUtils(); + // get data from DB // TODO: OFFER.ADDRESS - var fields = [/*"OFFER.ADDRESS"*/ "''", "OFFER.CONTACT_ID", "OFFER.LANGUAGE", /*"OFFER.PAYMENTTERMS"*/ "'DUMMY_OFFER.PAYMENTTERMS'", //0 - 3 - /*"OFFER.DELIVERYTERMS"*/ "'DUMMY_OFFER.DELIVERYTERMS'", "OFFER.OFFERCODE", "OFFER.CURRENCY", "OFFER.OFFERDATE", // 4 - 7 - "OFFER.OFFERID", "OFFERITEM.OFFER_ID", "OFFERITEM.INFO", "OFFERITEM.ASSIGNEDTO", // 11 - "OFFERITEM.PRODUCT_ID","OFFERITEM.ITEMNAME" , // 13 - "OFFERITEM.OPTIONAL", "OFFERITEM.ITEMPOSITION", // 15 - "PRODUCT.PRODUCTCODE", "PRODUCT.PRODUCTID", "OFFER.HEADER", "OFFERITEM.UNIT", "OFFER.VAT", // 20 - "COALESCE(OFFERITEM.QUANTITY,0)","COALESCE(OFFERITEM.PRICE,0)", "COALESCE(OFFERITEM.DISCOUNT,0)", // 23 - "COALESCE(OFFER.VERSNR, 0)", "COALESCE(OFFER.OFFERCODE,0)", "COALESCE(OFFERITEM.VAT, 0)", "0", "''", "SALESPROJECT_ID" ]; // 29 + var fields = [ + /*"OFFER.ADDRESS"*/ "''", + "OFFER.CONTACT_ID", + "OFFER.LANGUAGE", + /*"OFFER.PAYMENTTERMS"*/ "'DUMMY_OFFER.PAYMENTTERMS'", // 3 + /*"OFFER.DELIVERYTERMS"*/ "'DUMMY_OFFER.DELIVERYTERMS'", + "OFFER.OFFERCODE", + "OFFER.CURRENCY", + "OFFER.OFFERDATE", // 7 + "OFFER.OFFERID", + "OFFERITEM.OFFER_ID", + "OFFERITEM.INFO", + "OFFERITEM.ASSIGNEDTO", // 11 + "OFFERITEM.PRODUCT_ID", + "OFFERITEM.ITEMNAME" , // 13 + "OFFERITEM.OPTIONAL", + "OFFERITEM.ITEMPOSITION", // 15 + "PRODUCT.PRODUCTCODE", + "PRODUCT.PRODUCTID", + "OFFER.HEADER", + "OFFERITEM.UNIT", + "OFFER.VAT", // 20 + sqlUtil.isNull("OFFERITEM.QUANTITY", "0"), + sqlUtil.isNull("OFFERITEM.PRICE", "0"), + sqlUtil.isNull("OFFERITEM.DISCOUNT", "0"), // 23 + sqlUtil.isNull("OFFER.VERSNR", "0"), + sqlUtil.isNull("OFFER.OFFERCODE", "0"), + sqlUtil.isNull("OFFERITEM.VAT", "0"), + "0", + "''", + "SALESPROJECT_ID" // 29 + ]; var offerFromSql = " from PRODUCT" + " inner join OFFERITEM on (PRODUCT.PRODUCTID = OFFERITEM.PRODUCT_ID) " + " inner join OFFER on (OFFERITEM.OFFER_ID = OFFER.OFFERID)"; - var offerCondition = SqlCondition.begin().andPrepare("OFFER.OFFERID", pOfferID); + var offerCondition = SqlCondition.begin() + .andPrepare("OFFER.OFFERID", pOfferID); var rptdata = db.table(offerCondition.buildSql("select " + fields.join(", ") + offerFromSql, "1 = 0")); - var language = LegacyKeywordUtils.get("LANGUAGE", rptdata[0][2])[1]; + //TODO: use new keyword logic for language when possible + var language = "DE"; // LegacyKeywordUtils.get("LANGUAGE", rptdata[0][2])[1]; var relid = rptdata[0][1]; // TODO: AddrObject implementieren @@ -124,6 +152,47 @@ OfferUtils.openOfferReport = function(pOfferID) var sums = []; var vatsum = 0; + var data = rptdata.map(function (row) + { + //quantity * price + fullPrice = eMath.mulDec(parseFloat(row[21]), parseFloat(row[22])); + + if (row[14] != "1") //optional + { + //itemSum = (fullPrice * (100 - discount)) / 100 + itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, row[23])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item + sumItemSum += itemSum; //total sum (without vat) + } + //vatsum = itemSum * vat / 100 + vatsum = eMath.divDec(eMath.mulDec(itemSum, row[26]), 100); //vat per product + if(row[26] > 0) + sums.push([row[26], vatsum]); //MWSteuerwerte für Map vorbereiten + + // sumItemSum + vat + total = eMath.addDec(sumItemSum, row[20]); //total sum with vat + + return [ + row[6], //currency + datetime.toDate(row[7], translate.text("dd.MM.yyyy", language)), //offerdate + row[8], //offerId + row[10], //info + row[11], //assignedTo + row[13], //itemname + row[14], //optional + row[15], //itemposition + row[16], //productcode + text.html2text(row[18]), //header + text.formatDouble(row[21], translate.text("#,##0"), true), //quantity + text.formatDouble(row[22], translate.text("#,##0.00"), true), //price + text.formatDouble(row[23], translate.text("0.00"), true), //discount + row[24], //versnr + row[25], //offercode + text.formatDouble(row[26], translate.text("#,##0.00"), true), //vat + text.formatDouble(itemSum, translate.text("#,##0.00"), true), //itemsum + KeywordUtils.getViewValue($KeywordRegistry.get.QuantityUnit, row[19]) //unittext + ]; + }); + // discount-condtion = offerCondition + additional condition. So we can reuse the previous object offerCondition.andPrepare("OFFERITEM.DISCOUNT", 0, "# <> ?"); @@ -131,70 +200,35 @@ OfferUtils.openOfferReport = function(pOfferID) .andPrepare("OFFER.OFFERID", pOfferID) .buildSql("select count(OFFERITEM.DISCOUNT)" + offerFromSql, "1 = 0")); - - for(var i = 0; i < rptdata.length; i++) - { - var optional = rptdata[i][14]; - - // calculate: - // "OFFERITEM_QUANTITY" * "OFFERITEM_PRICE" - fullPrice = eMath.mulDec(parseFloat(rptdata[i][21]), parseFloat(rptdata[i][22]) ); - - // ( fullPrice * ( 100 - "OFFERITEM_DISCOUNT" ) ) / 100 - if(optional) - { - itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, rptdata[i][23]) ), 100), 2, eMath.ROUND_HALF_EVEN); //Summe je Artikel - sumItemSum += itemSum; //Gesamtsumme aller Artikel - } - // itemSum * "OFFERITEM_VAT" / 100 - vatsum = (eMath.divDec(eMath.mulDec(itemSum, rptdata[i][26] ), 100)); //Steuerbetrag in Euro je Artikel - if(rptdata[i][26] > 0) sums.push([rptdata[i][26], vatsum]); //MWSteuerwerte für Map vorbereiten - // sumItemSum + "OFFER_VAT" - total = eMath.addDec(sumItemSum, rptdata[i][20]); //Gesamtsumme zzgl. MwSt. - total = text.formatDouble(total, translate.text("#,##0.00"), true) - // format date - rptdata[i][7] = datetime.toDate(rptdata[i][7], translate.text("dd.MM.yyyy", language)); - // format numbers - rptdata[i][22] = text.formatDouble(rptdata[i][22], translate.text("#,##0.00"), true); - rptdata[i][23] = text.formatDouble(rptdata[i][23], translate.text("0.00"), true); - rptdata[i][21] = text.formatDouble(rptdata[i][21], translate.text("#,##0"), true); - rptdata[i][26] = text.formatDouble(rptdata[i][26], translate.text("#,##0.00"), true); - rptdata[i][27] = text.formatDouble(itemSum, translate.text("#,##0.00"), true); //Immer zwei Nachkommastellen und ',' statt '.' - rptdata[i][28] = KeywordUtils.get("UNIT", rptdata[i][19])[1]; - } - // TODO: get Images implementieren - var imgData = ["meineFirma | Konrad-Zuse-Straße 4 | DE 84144 Geisenhausen", + var imgData = ["meineFirma | Konrad-Zuse-Straße 4 | DE 84144 Geisenhausen", "base64:iVBORw0KGgoAAAANSUhEUgAAAM4AAABRCAYAAACaL5lSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA4QzAyM0IwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA4QzAyM0MwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDhDMDIzOTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDhDMDIzQTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhF3nYoAAAlvSURBVHja7J1fjBXV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"] // getMyASYS_ICONSdata(); - var params = {}; - params["myAddr"] = imgData[0]; - params["Pos"] = translate.text("Pos.", language); - params["Artikelbezeichnung"] = translate.text("Articledescription", language); - params["Artikel-Nr"] = translate.text("Articlenumber", language); - params["Einzelpreis"] = translate.text("Unitprice", language); - params["Menge"] = translate.text("Amount", language); - params["UMSt"] = translate.text("UMSt", language); - params["Datum"] = translate.text("Date", language); - params["Nummer"] = translate.text("Number", language); - params["Zahlungsbedingung"] = translate.text("Conditions of payment", language); - params["Lieferbedingung"] = translate.text("Deliveryspecification", language); - params["Rabatt"] = translate.text("Rabatt", language); - params["Gesamt"] = translate.text("Total", language); - params["Summe"] = translate.text("Sum", language); - params["zzglUMST"] = translate.text("Plus Salestax", language); - - // TODO: OFFER.ADDRESS - params["OFFERAddr"] = AddressUtils.getAddress(relid).toString(); //rptdata[0][0]; - // TODO: AddrObject implementieren - params["OFFERPers"] = (AddressUtils.getLetterSalutation() + ",").toString(); //addrobj.formatAddress("{ls},"); - - // TODO: payment / delivery-Terms implement (if needed) - params["OFFERPay"] = ""//getKeyName(rptdata[0][3] , "PAYMENTTERMS", "KEYNAME1", language); - params["OFFERDel"] = ""//getKeyName(rptdata[0][4] , "DELIVERYTERMS", "KEYNAME1", language); + var params = { + "Zahlungsbedingung" : translate.text("Conditions of payment", language), + "Artikelbezeichnung" : translate.text("Articledescription", language), + "Lieferbedingung" : translate.text("Deliveryspecification", language), + "OFFERPers" : (AddressUtils.getLetterSalutation() + ",").toString(), // TODO: AddrObject implementieren (addrobj.formatAddress("{ls},");) + "Artikel-Nr" : translate.text("Articlenumber", language), + "OFFERAddr" : AddressUtils.getAddress(relid).toString(), // TODO: OFFER.ADDRESS + "zzglUMST" : translate.text("Plus Salestax", language), + "Einzelpreis" : translate.text("Unitprice", language), + "Nummer" : translate.text("Number", language), + "Rabatt" : translate.text("Rabatt", language), + "Menge" : translate.text("Amount", language), + "Gesamt" : translate.text("Total", language), + "Datum" : translate.text("Date", language), + "UMSt" : translate.text("UMSt", language), + "Summe" : translate.text("Sum", language), + "Pos" : translate.text("Pos.", language), + "myAddr" : imgData[0], + // TODO: payment / delivery-Terms implement (if needed) + "OFFERPay" : "", //getKeyName(rptdata[0][3] , "PAYMENTTERMS", "KEYNAME1", language); + "OFFERDel" : "" //getKeyName(rptdata[0][4] , "DELIVERYTERMS", "KEYNAME1", language); + }; - // TODO: implementieren wenn Attribute möglich sind + // TODO: implementieren wenn Attribute m�glich sind var adma = "" /*var adm = getAddressData( [GetAttributeKey( "Aussendienst", "1", orgrelid, pUser )[0]], [["Person","function", "concat( ['SALUTATION', 'TITLE', 'FIRSTNAME','LASTNAME'])"], @@ -205,32 +239,66 @@ OfferUtils.openOfferReport = function(pOfferID) if (adm[1] != undefined) adma = adm[1].join("\n");*/ params["AD_Name"] = adma; params["SUMITEMSUM"] = sumItemSum; - params["TOTAL"] = total; + params["TOTAL"] = text.formatDouble(total, translate.text("#,##0.00"), true); params["anzahl"] = countDiscounts; offerReport.addImage("myLogo", imgData[1]); offerReport.addSubReportData("subdata", ReportData.begin(["VAT","WERT"]).add(sums)); offerReport.addReportParams(params); - - var data = []; - for( i = 0; i < rptdata.length; i++) - { - data[i] = [rptdata[i][6], rptdata[i][7], rptdata[i][8], rptdata[i][10], rptdata[i][11], rptdata[i][13], - rptdata[i][14], rptdata[i][15], rptdata[i][16], rptdata[i][18], rptdata[i][19], //10 - rptdata[i][22], rptdata[i][23], - rptdata[i][24], rptdata[i][25], rptdata[i][26], rptdata[i][27], rptdata[i][28]]; - } - // 0 1 2 3 4 - offerReport.setReportData(ReportData.begin(["OFFER_CURRENCY", "OFFER_OFFERDATE", "OFFER_OFFERID", "OFFERITEM_INFO", "OFFERITEM_ASSIGNEDTO", - "OFFERITEM_ITEMNAME" , "OFFERITEM_OPTIONAL", "OFFERITEM_ITEMPOSITION", "PRODUCT_PRODUCTCODE", "OFFER_HEADER", // 9 - "OFFERITEM_QUANTITY", "OFFERITEM_PRICE", "OFFERITEM_DISCOUNT", "OFFER_VERSNR", "OFFER_OFFERCODE", "OFFERITEM_VAT", "ITEMSUM", // 16 - "OFFERITEM_UNITTEXT"]) // 17 - .add(data)); + + offerReport.setReportData(ReportData.begin( + [ + "OFFER_CURRENCY", + "OFFER_OFFERDATE", + "OFFER_OFFERID", + "OFFERITEM_INFO", + "OFFERITEM_ASSIGNEDTO", + "OFFERITEM_ITEMNAME" , + "OFFERITEM_OPTIONAL", + "OFFERITEM_ITEMPOSITION", + "PRODUCT_PRODUCTCODE", + "OFFER_HEADER", // 9 + "OFFERITEM_QUANTITY", + "OFFERITEM_PRICE", + "OFFERITEM_DISCOUNT", + "OFFER_VERSNR", + "OFFER_OFFERCODE", + "OFFERITEM_VAT", + "ITEMSUM", // 16 + "OFFERITEM_UNITTEXT" //17 + ]) + .add(data)); offerReport.openReport(); } +/** + * opens an order in NEW mode with values from an offer + * + * @param pOfferId {String} id of the offer + * @param pSalesprojectId {String} salesproject id + * @param pContactId {String} contact id + * @param pLanguage {String} language + * @param pCurrency {String} [currency=""] + * @param pAddress {String} [address=""] + * @param pHeader {String} [header=""] + */ +OfferUtils.copyToOrder = function (pOfferId, pSalesprojectId, pContactId, pLanguage, pCurrency, pAddress, pHeader) +{ + var params = { + "ContactId_param" : pContactId, + "SalesprojectId_param" : pSalesprojectId, + "OrderLanguage_param" : pLanguage, + "OfferId_param" : pOfferId, + "OrderCurrency_param" : pCurrency || "", + "OrderAddress_param" : pAddress || "", + "OrderHeader_param" : pHeader || "" + }; + neon.openContext("Order_context", null, null, neon.OPERATINGSTATE_NEW, params); +} + + /******************************************************************************/ /** diff --git a/report/RPTJ_OFFER/reportData.jrxml b/report/RPTJ_OFFER/reportData.jrxml index cfa817363bd7a7f089a2ecadd40fe74323d89fe6..cc52933641c4cd1a47ce046eb76845e4862a400d 100644 --- a/report/RPTJ_OFFER/reportData.jrxml +++ b/report/RPTJ_OFFER/reportData.jrxml @@ -125,12 +125,13 @@ </textField> </band> <band height="20"> - <componentElement> - <reportElement mode="Transparent" x="20" y="0" width="535" height="20" uuid="bb9d7d02-c2a6-4f60-94e9-f0912135dbeb"/> - <hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RetainShape" horizontalAlign="Left" verticalAlign="Middle"> - <hc:htmlContentExpression><![CDATA[$F{OFFER_HEADER}]]></hc:htmlContentExpression> - </hc:html> - </componentElement> + <textField> + <reportElement x="20" y="0" width="535" height="20" uuid="8d10af04-82a4-4344-ae98-de42c82a674e"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{OFFER_HEADER}]]></textFieldExpression> + </textField> </band> <band height="42"> <staticText>