Simple invoice
by Martin Murciego
HTML
<script src="https://unpkg.com/jquery"></script>
<script src="https://surveyjs.azureedge.net/1.0.0/survey.jquery.js"></script>
<div id="surveyElement"></div>
<div id="surveyResult"></div>
JavaScript
function discount(params) {
if(!params || params.length < 1 || !params[0]) return 0;
var v = params[0];
if(v <= 500) return 0;
if(v <= 1000) return v / 20;
if(v <= 3000) return v / 10;
if(v <= 5000) return v * 15 / 1000;
return v / 5;
}
Survey.FunctionFactory.Instance.register("discount", discount);
var json = {
pages: [
{
elements: [
{
type: "paneldynamic",
name: "items",
title: "Invoice Items",
templateElements: [
{
type: "text",
isRequired: true,
name: "name",
title: "Name:"
},
{
type: "text",
inputType: "number",
isRequired: true,
name: "cost",
title: "Item Cost:"
},
{
type: "text",
inputType: "number",
isRequired: true,
name: "quantity",
startWithNewLine: false,
title: "Quantity:"
},
{
type: "expression",
currency: "EUR",
displayStyle: "currency",
expression: "{panel.cost} * {panel.quantity}",
name: "total",
startWithNewLine: false,
title: "Total Item Cost:"
}
],
templateTitle: "item #{panelIndex}",
minPanelCount: 1,
keyName: "name",
panelAddText: "Add another item",
panelRemoveText: "Remove item",
showQuestionNumbers: "none"
},
{
type: "panel",
name: "panel1",
elements: [
{
type: "expression",
displayStyle: "none",
expression: "sumInArray({items}, 'quantity'",
name: "totalQuantity",
title: "Total Quantity:"
},
{
type: "expression",
currency: "EUR",
displayStyle: "currency",
expression: "sumInArray({items}, 'total'",
name: "totalCost",
startWithNewLine: false,
title: "Total Cost:"
},
{
type: "expression",
currency: "EUR",
displayStyle: "currency",
expression: "discount({totalCost})",
name: "discount",
...