Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
basic
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
xrm
basic
Commits
6683818f
Commit
6683818f
authored
6 years ago
by
S.Listl
Browse files
Options
Downloads
Patches
Plain Diff
Offer Report Refactoring
parent
b62a325c
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
process/Offer_lib/process.js
+154
-86
154 additions, 86 deletions
process/Offer_lib/process.js
report/RPTJ_OFFER/reportData.jrxml
+7
-6
7 additions, 6 deletions
report/RPTJ_OFFER/reportData.jrxml
with
161 additions
and
92 deletions
process/Offer_lib/process.js
+
154
−
86
View file @
6683818f
...
...
@@ -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 fr 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-Strae 4 | DE 84144 Geisenhausen
"
,
var
imgData
=
[
"
meineFirma | Konrad-Zuse-Stra
ß
e 4 | DE 84144 Geisenhausen
"
,
"
base64:iVBORw0KGgoAAAANSUhEUgAAAM4AAABRCAYAAACaL5lSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA4QzAyM0IwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA4QzAyM0MwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDhDMDIzOTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDhDMDIzQTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhF3nYoAAAlvSURBVHja7J1fjBXVHcfPJQJRoe1urQYJRBYlMUJisqwvGNjY3WgEUtN2CeWBIGb3Ju6LElsW+gA8AHe1UfuwTcBASB/Q7CZNG0tjw2pWU15kNzEBJFnLqmvQBNEbU0pbX+jve+9vlrOzM/fOnTtz78zs95P8cv/MOTPnzJzvnN/5zZ+Tu3XrliGE1MYC7gJCKBxCKBxCKBxCKBxCKBxCCIVDCIVDCIVDCIVDyDzmDq8/d+1/PY5trRB7VGyt2BqxVWLLxe4RW6JpbohdF7sq9qnYpNhFsY/Evoi6QKeOvMAWQKITToQ8LPaEWKfYBrFlVdL/SO1BsU3W/1+JnRMbE3tP7DIPHcmicLrFfia2VWxlBOuD4H6pNi32tthfxM7yEJIsCAc9yw6x7WJLYyozhNgvtlPsLbHT2hMRkjrhYPzynNhu/d4IIMxesafEToqdiGMcREhcwnlKe4AtTaoDhHpArF1sSOwdHlYSN/WGo/Niv2+iaGy2aFnyPKwkqT1OTmyf2pIE1Qdh7t+J/VjsqBgfbyWJEU5OXaMDCa0ThHxYbJHYIYqHJMVV25dg0dgc0LIS0nTh5FPWGPdxzEOaLRxEz/YkbEwTxG3bo2UnpOHCQci3XwffaWONln0FDzdptHBwcXNLiuu5RetASMOE02nKdwSknd1aF0IaIpwdGXFzVmhdCIldOLjLeXuG6rtd60RIrMLBowFLM1TfpVonQmITDh5C25rBOm/VuhESi3Dw5ObKDNZ5pdaNkFiE05nhenfy0JM4hIMI1IYM13uD4QVREoNw8DaaZRmu9zKtIyGh8HusYG3UG/pJ6w/NKy89O/P70j+nzSsn/zTz+5EHV5oHlt9rep58fFa+sQ8vmEtXps35C5/4+12PrTMP3H9v6dMGeZAX6/Cp49tsAiRK4TTsnrS771xsdj3TZTrWPeQrCtiljmnzhzfPmH//538zyyC0/l9tLonSC6wT1tmxzgxJ3q+//a4pdSTzx1Vb1SjR/Hr3L3xFY4MeCWnt3wf7d/iKxgYC+83un7vTruLhJ1H3OMsbsfHnpbdAo0Yv8rcPzpsz74/P6i3QU0AgtgA2b1pvPhQXDHltd+7MB+MzPQrSIa/tukE0mzeuN6f+/O6cOuZyubrr0tvb12bK73nDZ/cbbxwfzWKD2Tnw2l75KIiN/rHwYibvwggyobSfcO6Ju3COINDYX5axjsuNKo1PYLue+eksATy9scN0rF1T6q0AxkkYL9l8dvWaOXX1XfPZl9dK+W23zxJY1HXsUtEANK7RBDf+s1reakyJOFa7/utz6ivr6ZLlmTxBhHXVGvawmsfYYxYjf//HrHENBIMexVnmFs2cwIJr+WO33cKo64gGNKXfBzPcZo479Z2voqnU4zQENGz0DpWAaJAOLpoNxGa7dn6cv/jJbHfv/vtiqYu4ZhDN6pQd/5rdLUk/mPETQ109zo2GCOf8hUDpPr4yHTqvu8exAgQ3DCERC+d63BtGT1Ktt3G45uHK+VybmYPbDbSEc52Hn0QtnKtxb7jSuKZaWojOHvfUkt8JKjSijmT+jXEwqdOmeHuc/4bOe7OOvK46etLb24eoWI8pv4/aHhSP+IWZNRx9RX/mJd3xasvlP2wDUSo7wlUaQ8jyYrUKhClnvewceO2Yltkr4maHq0vLEXkz5SijU8duJ6jgXpf8btPfe937Q5YXNU+LpilYaSY0zUiVsrdrObD+FmsR8o1Uyx+kx5mcByeNSa/GLzauB6XdtRgH66w21rqR9aDRDJu5YWGsf1yF5pe3YeWsU2QoW6DQt6a94hLNzP6AYFRY4y7RGN0Hwypav/UXrLwtrsU91fIHFc7FeSCci67G2KIHGQehqL1CDmbK0TLnbFSQtH11brtPbdDaRqu5Hept82hAzShnveDEgN5ltZzNc2pePaFTJ5S9Fel89sewfs876zPlR+GdywAFFZcX7VYPtj5E/kCuGubcxPSBWb1D+iuto01BDwp2YreGl0vo923SEIf17LTXOqhhaHe7c+qa5VUYJRdOvg94uGxRlhMXMStdJu+u41oNyjgRMNzdoq7SNucPdc3y2pC7rBPJNtulQvkkTd7cnp2vx3iHyydUcFP2nzXkD9TjYIKmcxnubc4ZaxIqbazO2XnQbowunB0KV6m9ju2PusdALn/bfZZsVjnrZTCCtPZ+8hyHqLinLMEajzQDbtG48hcr5Q/a44AxU55zM4uMefi4Xg13FtJQJ6Qh2o16IqxwAi5ri7mcsd5vVsNguyhp/co44fPdzZTur7aQxZ0wwW5DqioczO6Mq4dZfO/Aex5uhcO3VqOr5l6EpVih0RcrbL/R5ayHqSj2RwURhdqeFZWzx5s1i62ScDAlOh706s+gcC4npHHVSoshoRDB9Fjjw7qpdq8apkTH7M5LM75fnTNeUc74rSxn5kTjXFtyGLDHUAhE1HDHeCDhYGWYEr13nginBQPwIBcfWc5UsdcKLmyLYoVB3h192mR/GvRRnwE4y5n+3qbdcnErBSvaoxbOmNjJLO9cRKGsgWehylX7rmZdlU9LOdM2RtS7ClqiFg44IfbXtO6thQvvuBkgWd7auePuRqcN8Zi5faGsWaSlnIlAw9yOS1vQIIEjmDb7frkogwMOcNWGTPnNMGl7O8zknYsX/UA+76p2NpcGB/93WBslzugFn+QTzapMWsqZMPLW/sI9ae7l3ToOChxxq2UO0HfEXjXpegAMZX118aKFNwM2SvjAqzXqUvRohPi/tdkv4khLORPU64yoONxjHNyVsD7MbUU5rzd67Nr/eqU8+8UOp2Sf/VbsiN/CU0deYKsioVgQIs9RsUMpqNshLSshkRPmZR23tFF+L7bPJG/69hsqmKNaVkISIRxHPHCBvhHbk6CAwaSOw47x0JIkCscBDfRzU76frdnTuSNcPqRBDEISLRyjDfWSKUdzMCV6o+edQagcF2hPmOzf4UAyJByn8R405bsMMCU6ZneO+8bQf5nyfXSnzdznawhJhXAcxtQQL8fszpioNurnefCMEB53wJ3bvDpOMiEch7NqGHNgotpOU54+MOw7DPCOgHMqSjyEdpmHjmRROA6X1YZ07IPpAzETGqJwmJ8GU21g1gAnpI1QMt6wiZcF4r1niJLhbTQfcfxCkkQuyFwghJDZLOAuIITCIYTCIYTCIYTCIYTCIYRQOIRQOIRQOIRQOIRQOISQWvi/AAMA9UczDEaG0p8AAAAASUVORK5CYII=
"
]
// 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 mglich 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
"
]
=
t
otal
;
params
[
"
TOTAL
"
]
=
t
ext
.
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
);
}
/******************************************************************************/
/**
...
...
This diff is collapsed.
Click to expand it.
report/RPTJ_OFFER/reportData.jrxml
+
7
−
6
View file @
6683818f
...
...
@@ -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>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment