diff --git a/pom.xml b/pom.xml index b5050bf..fadd49f 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ 2.5.6 2.11.0 - 4.3.0 + 4.4.0 1.4.3 1.4.0 1.3.0 diff --git a/src/main/java/com/docusign/controller/eSignature/services/ResponsiveSigningService.java b/src/main/java/com/docusign/controller/eSignature/services/ResponsiveSigningService.java index de9f932..88e8b39 100644 --- a/src/main/java/com/docusign/controller/eSignature/services/ResponsiveSigningService.java +++ b/src/main/java/com/docusign/controller/eSignature/services/ResponsiveSigningService.java @@ -8,10 +8,20 @@ import com.docusign.esign.model.*; import java.io.IOException; +import java.util.Arrays; import java.util.Collections; public final class ResponsiveSigningService { //ds-snippet-start:eSign38Step2 + private static final String TRUE = "true"; + private static final String FALSE = "false"; + private static final int L1_PRICE = 5; + private static final int L2_PRICE = 150; + private static final int ANCHOR_OFFSET_Y = 10; + private static final int ANCHOR_OFFSET_X = 20; + private static final String DEFAULT_FONT = "helvetica"; + private static final String DEFAULT_FONT_SIZE = "size11"; + private static final String ANCHOR_UNITS = "pixels"; private static final String HTML_DOCUMENT_FILE_NAME = "templates/order-form.ftl"; public static EnvelopeDefinition makeEnvelope( String signerEmail, @@ -22,9 +32,9 @@ public static EnvelopeDefinition makeEnvelope( WorkArguments args ) throws IOException { String htmlDoc = EnvelopeHelpers.createHtmlFromTemplateFile(HTML_DOCUMENT_FILE_NAME, "args", args); - htmlDoc = htmlDoc.replace("/sn1/", "") - .replace("/l1q/", " ") - .replace("/l2q/", " ");; + htmlDoc = htmlDoc + .replace("/l1q/", " ") + .replace("/l2q/", " ");; Signer signer = new Signer() .email(signerEmail) @@ -47,12 +57,53 @@ public static EnvelopeDefinition makeEnvelope( .name("Lorem Ipsum") .documentId("1") .htmlDefinition(new DocumentHtmlDefinition().source(htmlDoc)))); + signer.setTabs(createTabs()); envelope.setRecipients(EnvelopeHelpers.createRecipients(signer, cc)); envelope.setStatus(EnvelopeHelpers.ENVELOPE_STATUS_SENT); return envelope; } + private static Tabs createTabs() { + FormulaTab formulaForFirstNumber = createFormulaTab("/l1e/", "l1e", L1_PRICE, "l1q"); + FormulaTab formulaForSecondNumber = createFormulaTab("/l2e/", "l2e", L2_PRICE, "l2q"); + FormulaTab finalFormula = new FormulaTab() + .font(DEFAULT_FONT) + .bold(TRUE) + .fontSize(DEFAULT_FONT_SIZE) + .anchorString("/l3t/") + .anchorYOffset("-8") + .anchorUnits(ANCHOR_UNITS) + .anchorXOffset("105") + .tabLabel("l3t") + .formula("[l1e] + [l2e]") + .roundDecimalPlaces("0") + .required(TRUE) + .locked(TRUE) + .disableAutoSize(FALSE); + + Tabs signerTabs = EnvelopeHelpers.createSingleSignerTab("/sn1/", ANCHOR_OFFSET_Y, ANCHOR_OFFSET_X); + signerTabs.formulaTabs(Arrays.asList(formulaForFirstNumber, formulaForSecondNumber, finalFormula)); + + return signerTabs; + } + + private static FormulaTab createFormulaTab(String anchor, String label, int price, String numerical) { + return new FormulaTab() + .font(DEFAULT_FONT) + .fontSize(DEFAULT_FONT_SIZE) + .anchorString(anchor) + .anchorYOffset("-8") + .anchorUnits(ANCHOR_UNITS) + .anchorXOffset("105") + .tabLabel(label) + .formula(String.format("[%s] * {%d}", numerical, price)) + .roundDecimalPlaces("0") + .required(TRUE) + .locked(TRUE) + .disableAutoSize(FALSE); + } + public static ViewUrl responsiveSigning( EnvelopesApi envelopesApi, String accountId,