diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index a8d278f4985f..8625585f0c31 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -241,6 +241,10 @@ class Design extends BaseDesign if ($this->entity instanceof Quote) { $variables = $this->context['pdf_variables']['quote_details']; + + if ($this->entity->partial > 0) { + $variables[] = '$quote.balance_due'; + } } if ($this->entity instanceof Credit) { @@ -631,6 +635,10 @@ class Design extends BaseDesign if (in_array('$outstanding', $variables)) { $variables = \array_diff($variables, ['$outstanding']); } + + if ($this->entity->partial > 0) { + $variables[] = '$partial_due'; + } } foreach (['discount'] as $property) { diff --git a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php index 02fb145f1280..34f21fe8422f 100644 --- a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php +++ b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php @@ -272,12 +272,21 @@ document.addEventListener('DOMContentLoaded', function() { return false; } + // Some variables don't map 1:1 to table columns. This gives us support for such cases. + $aliases = [ + '$quote.balance_due' => 'partial', + ]; + try { $_variable = explode('.', $variable)[1]; } catch (Exception $e) { throw new Exception('Company settings seems to be broken. Missing $entity.variable type.'); } + if (\in_array($variable, \array_keys($aliases))) { + $_variable = $aliases[$variable]; + } + if (is_null($this->entity->{$_variable})) { return true; }