updated scripts

This commit is contained in:
liphh committed 2026-10-02 22:35:11 +02:00
1 parent 2326f1fbbc
commit 41b55f96c1
118 files changed
+8185 -567

No files matched your search

+263
View File
@@ -0,0 +1,263 @@
#!/usr/bin/env bash
# Arch LXC Secure Cleanup & Audit Script
# Usage: sudo ./arch-cleanup.sh [--dry-run]
set -euo pipefail
# ---------------------------------------------------------------------------
# Safety check
# ---------------------------------------------------------------------------
if [[ $EUID -ne 0 ]]; then
echo "Error: Run this script with sudo: sudo $0 [--dry-run]"
exit 1
fi
# ---------------------------------------------------------------------------
# Config & User detection
# ---------------------------------------------------------------------------
DRY_RUN=false
if [[ "${1:-}" == "--dry-run" ]]; then
DRY_RUN=true
echo ">>> DRY-RUN MODE: No changes will be made <<<"
echo ""
fi
TARGET_USER="${SUDO_USER:-$(logname 2>/dev/null || echo '')}"
TARGET_UID=""
if [[ "$TARGET_USER" == "root" ]]; then
TARGET_USER=""
fi
if [[ -n "$TARGET_USER" ]]; then
TARGET_UID="$(id -u "$TARGET_USER" 2>/dev/null || echo '')"
fi
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------
RED=$'\e[31m'
GREEN=$'\e[32m'
YELLOW=$'\e[33m'
BLUE=$'\e[34m'
CYAN=$'\e[36m'
NC=$'\e[0m'
log() { printf "${GREEN}[INFO]${NC} %s\n" "$*"; }
warn() { printf "${YELLOW}[WARN]${NC} %s\n" "$*"; }
err() { printf "${RED}[ERROR]${NC} %s\n" "$*"; }
section() { printf "\n${BLUE}=== %s ===${NC}\n" "$*"; }
confirm() {
[[ "$DRY_RUN" == true ]] && return 0
local r
read -r -p "$1 [y/N] " r
[[ "$r" =~ ^[Yy]$ ]]
}
run() {
if [[ "$DRY_RUN" == true ]]; then
printf "${CYAN}[DRY-RUN]${NC} %s\n" "$*"
else
"$@"
fi
}
# ---------------------------------------------------------------------------
# Phase 1 — Audit: Where is the 170 GB?
# ---------------------------------------------------------------------------
section "Disk Usage Summary"
df -hT / | grep -E 'Filesystem|/dev/'
section "Suspect Directory Sizes"
suspects=(
/var/cache/pacman/pkg
/var/lib/containers
/var/log
/var/log/journal
/var/lib/systemd/coredump
/var/tmp
/tmp
/root
)
for dir in "${suspects[@]}"; do
[[ -d "$dir" ]] || continue
sz=$(du -sh "$dir" 2>/dev/null | awk '{print $1}')
printf " %-40s %s\n" "$dir" "$sz"
done
if [[ -n "$TARGET_USER" && -d "/home/$TARGET_USER" ]]; then
section "User '$TARGET_USER' Suspect Directories"
user_suspects=(
"/home/$TARGET_USER/.cache"
"/home/$TARGET_USER/.cache/paru"
"/home/$TARGET_USER/.cache/paru/clone"
"/home/$TARGET_USER/.cache/paru/pkg"
"/home/$TARGET_USER/.cache/yay"
"/home/$TARGET_USER/.local/share/containers"
)
for dir in "${user_suspects[@]}"; do
[[ -e "$dir" ]] || continue
sz=$(du -sh "$dir" 2>/dev/null | awk '{print $1}')
printf " %-50s %s\n" "$dir" "$sz"
done
fi
section "Large Individual Files (>1 GB)"
for search_root in /var /home /root /opt; do
[[ -d "$search_root" ]] || continue
find "$search_root" -xdev -maxdepth 5 -type f -size +1G -exec ls -lh {} + 2>/dev/null | head -n 20
done
echo ""
if ! confirm "Continue with cleanup?"; then
log "Aborted by user."
exit 0
fi
# ---------------------------------------------------------------------------
# Phase 2 — Cleanup
# ---------------------------------------------------------------------------
# --- Pacman cache ---
section "Pacman Cache Cleanup"
if command -v paccache &>/dev/null; then
log "Removing cached packages for uninstalled software..."
run paccache -ruv
log "Keeping last 2 versions of installed packages, removing older..."
run paccache -rvk2
else
warn "'paccache' (pacman-contrib) not found."
if confirm "Install pacman-contrib now? (Recommended; needs a little free space)"; then
if [[ "$DRY_RUN" == true ]]; then
log "[DRY-RUN] Would install pacman-contrib and run paccache"
else
pacman -S --noconfirm --needed pacman-contrib
paccache -ruv
paccache -rvk2
fi
else
if confirm "Run fallback 'pacman -Sc'? (Removes ALL uninstalled cached packages)"; then
run pacman -Sc --noconfirm
fi
fi
fi
# --- Orphaned packages ---
section "Orphaned Packages"
orphans="$(pacman -Qdtq 2>/dev/null || true)"
if [[ -z "$orphans" ]]; then
log "No orphaned packages found."
else
warn "Orphaned packages found:"
echo "$orphans"
if confirm "Remove these orphaned packages?"; then
if [[ "$DRY_RUN" == true ]]; then
log "[DRY-RUN] Would remove: $orphans"
else
# shellcheck disable=SC2086
pacman -Rns --noconfirm $orphans
fi
fi
fi
# --- AUR Helpers (paru / yay) ---
section "AUR Helper Cache Cleanup"
clean_aur() {
local helper=$1
local binpath clone_dir pkg_dir sz
binpath="$(command -v "$helper" 2>/dev/null || true)"
if [[ -z "$binpath" ]]; then
log "$helper not installed."
return
fi
if [[ -z "$TARGET_USER" ]]; then
warn "Cannot determine non-root user for $helper cleanup."
return
fi
log "Running safe cache clean for $helper..."
run sudo -u "$TARGET_USER" "$binpath" -Sc --noconfirm || warn "$helper -Sc finished with warnings"
clone_dir="/home/$TARGET_USER/.cache/$helper/clone"
if [[ -d "$clone_dir" ]]; then
sz=$(du -sh "$clone_dir" 2>/dev/null | awk '{print $1}')
warn "$helper clone directory size: $sz"
if confirm "Delete $helper PKGBUILD clones? (They must be re-downloaded later)"; then
run rm -rf "${clone_dir:?}"/*
log "Cleaned $clone_dir"
fi
fi
pkg_dir="/home/$TARGET_USER/.cache/$helper/pkg"
if [[ -d "$pkg_dir" ]] && command -v paccache &>/dev/null; then
log "Running paccache on $helper package dir..."
run paccache -ruv --cachedir "$pkg_dir" || true
fi
}
clean_aur "paru"
clean_aur "yay"
# --- Podman (rootful + rootless) ---
section "Podman Cleanup"
if command -v podman &>/dev/null; then
log "Rootful Podman disk usage:"
run podman system df || true
if confirm "Prune unused rootful Podman resources (containers, networks, images, build cache)?"; then
run podman system prune -a -f
fi
else
log "Podman (rootful) not installed."
fi
if [[ -n "$TARGET_USER" && -n "$TARGET_UID" ]]; then
if sudo -u "$TARGET_USER" podman --version &>/dev/null; then
log "Rootless Podman disk usage for $TARGET_USER:"
run sudo -u "$TARGET_USER" podman system df || true
if confirm "Prune unused rootless Podman resources for $TARGET_USER?"; then
run sudo -u "$TARGET_USER" \
XDG_RUNTIME_DIR="/run/user/$TARGET_UID" \
podman system prune -a -f ||
run sudo -u "$TARGET_USER" podman system prune -a -f
fi
else
log "Rootless Podman not configured for $TARGET_USER."
fi
else
log "Skipping rootless Podman (no target user detected)."
fi
# --- Logs ---
section "System Logs"
if [[ -d /var/log/journal ]] && command -v journalctl &>/dev/null; then
jsz=$(du -sh /var/log/journal 2>/dev/null | awk '{print $1}')
log "Persistent journal size: $jsz"
if confirm "Vacuum journal to max 500 MB?"; then
run journalctl --vacuum-size=500M
fi
else
log "No persistent systemd journal detected."
fi
if find /var/log -maxdepth 2 -type f -size +500M 2>/dev/null | grep -q .; then
warn "Large uncompressed log files remain in /var/log. You may want to truncate them manually."
fi
# ---------------------------------------------------------------------------
# Final Summary
# ---------------------------------------------------------------------------
section "Final Disk Usage"
df -hT /
log "Cleanup complete. Review the output above to see how much was recovered."
if [[ "$DRY_RUN" == true ]]; then
log "This was a DRY RUN. Re-run without --dry-run to actually free space."
fi
Executable → Regular
View File
File mode changed.
-91
View File
@@ -1,91 +0,0 @@
#!/bin/bash
# Fast Aria2 Download Script
# Usage: ./aria2-download.sh <URL> [output-filename]
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Check if aria2c is installed
if ! command -v aria2c &> /dev/null; then
echo -e "${RED}aria2c is not installed!${NC}"
echo "Installing aria2..."
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
if command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y aria2
elif command -v yum &> /dev/null; then
sudo yum install -y aria2
elif command -v pacman &> /dev/null; then
sudo pacman -S aria2
else
echo -e "${RED}Please install aria2 manually${NC}"
exit 1
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
if command -v brew &> /dev/null; then
brew install aria2
else
echo -e "${RED}Please install Homebrew or aria2 manually${NC}"
exit 1
fi
else
echo -e "${RED}Unsupported OS. Please install aria2 manually${NC}"
exit 1
fi
fi
# Check if URL is provided
if [ -z "$1" ]; then
echo -e "${RED}Error: No URL provided${NC}"
echo "Usage: $0 <URL> [output-filename]"
exit 1
fi
URL="$1"
OUTPUT_FILE="$2"
# Build aria2c command with optimized settings
ARIA2_CMD="aria2c \
--max-connection-per-server=16 \
--split=16 \
--min-split-size=1M \
--max-concurrent-downloads=16 \
--continue=true \
--max-tries=5 \
--retry-wait=3 \
--timeout=60 \
--connect-timeout=30 \
--file-allocation=none \
--summary-interval=0 \
--console-log-level=notice"
# Add output filename if provided
if [ -n "$OUTPUT_FILE" ]; then
ARIA2_CMD="$ARIA2_CMD --out=\"$OUTPUT_FILE\""
fi
# Add URL
ARIA2_CMD="$ARIA2_CMD \"$URL\""
echo -e "${GREEN}Starting download...${NC}"
echo -e "${YELLOW}URL: $URL${NC}"
if [ -n "$OUTPUT_FILE" ]; then
echo -e "${YELLOW}Output: $OUTPUT_FILE${NC}"
fi
echo ""
# Execute download
eval $ARIA2_CMD
if [ $? -eq 0 ]; then
echo -e "\n${GREEN}✓ Download completed successfully!${NC}"
else
echo -e "\n${RED}✗ Download failed!${NC}"
exit 1
fi
-87
View File
@@ -1,87 +0,0 @@
#!/bin/bash
SHADER_DIR="$HOME/.config/hypr/shaders"
SHADER_FILE="$SHADER_DIR/brightness.frag"
# Ensure shader directory exists
mkdir -p "$SHADER_DIR"
# Get screen brightness level
echo "Enter screen brightness level (0-10, where 10 = 100%):"
read -r LEVEL
# Validate input
if ! [[ "$LEVEL" =~ ^[0-9]+$ ]] || [ "$LEVEL" -lt 0 ] || [ "$LEVEL" -gt 10 ]; then
echo "Invalid input. Please enter a number between 0 and 10."
exit 1
fi
# Convert to decimal (0-10 -> 0.0-1.0)
BRIGHTNESS=$(echo "scale=2; $LEVEL / 10" | bc)
# Ask about keyboard backlight
echo "Adjust keyboard backlight? (y/n):"
read -r KBD_ADJUST
if [[ "$KBD_ADJUST" == "y" || "$KBD_ADJUST" == "Y" ]]; then
echo "Enter keyboard backlight level (0-10, where 10 = 100%):"
read -r KBD_LEVEL
# Validate keyboard input
if ! [[ "$KBD_LEVEL" =~ ^[0-9]+$ ]] || [ "$KBD_LEVEL" -lt 0 ] || [ "$KBD_LEVEL" -gt 10 ]; then
echo "Invalid input. Please enter a number between 0 and 10."
exit 1
fi
# Convert to percentage (0-10 -> 0-100)
KBD_PERCENT=$((KBD_LEVEL * 10))
# Set keyboard backlight
kbdlight set $KBD_PERCENT
echo "Keyboard backlight set to ${KBD_PERCENT}%"
fi
# Ask about blue light filter
echo "Apply blue light filter? (y/n):"
read -r BLUELIGHT
# Create shader based on choice
cat > "$SHADER_FILE" << EOF
#version 300 es
precision mediump float;
in vec2 v_texcoord;
out vec4 fragColor;
uniform sampler2D tex;
void main() {
vec4 pixColor = texture(tex, v_texcoord);
EOF
if [[ "$BLUELIGHT" == "y" || "$BLUELIGHT" == "Y" ]]; then
cat >> "$SHADER_FILE" << EOF
// Reduce blue light
pixColor.r *= 1.0;
pixColor.g *= 0.85;
pixColor.b *= 0.65;
EOF
fi
cat >> "$SHADER_FILE" << EOF
// Adjust brightness
pixColor.rgb *= $BRIGHTNESS;
fragColor = pixColor;
}
EOF
# Apply shader
if [ -z "$HYPRLAND_INSTANCE_SIGNATURE" ]; then
export HYPRLAND_INSTANCE_SIGNATURE=$(ls -t /tmp/hypr/ 2>/dev/null | head -n1)
fi
/usr/bin/hyprctl keyword decoration:screen_shader "$SHADER_FILE"
echo "Screen brightness set to ${LEVEL}0% $([ "$BLUELIGHT" == "y" ] || [ "$BLUELIGHT" == "Y" ] && echo "with blue light filter")"
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# 1. Choose the file
echo "Select the ebook file:"
select file in *.epub *.mobi *.pdf *.azw3; do
if [ -n "$file" ]; then
break
else
echo "Invalid selection."
fi
done
# 2. Prompt for metadata
read -p "Enter Author: " author
read -p "Enter Book Title: " title
read -p "Enter ISBN-13: " isbn13
read -p "Enter ASIN (optional): " asin
read -p "Enter Goodreads ID: " grid
# 3. Apply metadata using ebook-meta
# Adding the goodreads identifier is the most reliable fix for Readarr [6]
ebook-meta "$file" \
--authors "$author" \
--title "$title" \
--identifier "isbn:$isbn13" \
--identifier "asin:$asin" \
--identifier "goodreads:$grid"
echo "Metadata updated with Goodreads ID: $grid"
-32
View File
@@ -1,32 +0,0 @@
#!/bin/bash
SOURCE_DIRS=("/home/liph/Documents" "/home/liph/Pictures" "/home/liph/Downloads")
REPO_DIR="/home/liph/borg-repo"
BORG_PASSPHRASE="1ChagearC"
export BORG_PASSPHRASE
for SOURCE_DIR in "${SOURCE_DIRS[@]}"; do
ARCHIVE_NAME="{hostname}-{user}-{now}"
echo "Starting backup of ${SOURCE_DIR}..."
borg create --stats --progress \
"${REPO_DIR}::${ARCHIVE_NAME}" \
"${SOURCE_DIR}"
if [ $? -eq 0 ]; then
echo "Backup of ${SOURCE_DIR} completed successfully!"
else
echo "Backup of ${SOURCE_DIR} failed!"
fi
done
echo "Pruning old backups..."
borg prune --stats --progress \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
"${REPO_DIR}"
echo "Backup and pruning completed!"
-95
View File
@@ -1,95 +0,0 @@
#!/bin/sh
# Setting this, so the repo does not need to be given on the commandline:
# export BORG_REPO=ssh://username@example.com:2022/~/backup/main
#export BORG_REPO=~/backup/
# See the section "Passphrase notes" for more infos.
#export BORG_PASSPHRASE='1ChagearC'
export BORG_REPO="ssh://100.121.203.110:2222/./repo/borg-repo"
export BORG_PASSPHRASE="1ChagearC" # Encryption key
BACKUP_SOURCES=(
"/home/liph/Downloads/"
"/home/liph/dotfiles/"
"/home/liph/scripts"
) # What to back up
BACKUP_NAME="laptop-$(date +%Y-%m-%d)" # Dynamic backup name
# some helpers and error handling:
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
info "Starting backup"
# Initialize Borg repo (if not exists)
borg init --encryption=repokey "$BORG_REPO" 2>/dev/null || true
# Backup the most important directories into an archive named after
# the machine this script is currently running on:
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--progress \
--compression lz4 \
--exclude-caches \
--exclude 'home/*/.cache/*' \
--exclude 'var/tmp/*' \
"$BORG_REPO::$BACKUP_NAME" \
"${BACKUP_SOURCES[@]}" \
# ::'{hostname}-{user}-{now}' \
# /home/liph/Documents/ \
# /home/liph/Pictures/ \
# /home/liph/Downloads/
# /etc \
# /home \
# /root \
# /var
backup_exit=$?
info "Pruning repository"
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-*' matching is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:
borg prune \
--list \
--glob-archives '{hostname}-*' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6
"$BORG_REPO"
prune_exit=$?
# actually free repo disk space by compacting segments
info "Compacting repository"
borg compact
compact_exit=$?
# use highest exit code as global exit code
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
if [ ${global_exit} -eq 0 ]; then
info "Backup, Prune, and Compact finished successfully"
elif [ ${global_exit} -eq 1 ]; then
info "Backup, Prune, and/or Compact finished with warnings"
else
info "Backup, Prune, and/or Compact finished with errors"
fi
exit ${global_exit}
# Check backup integrity
borg check "$BORG_REPO"
-95
View File
@@ -1,95 +0,0 @@
#!/bin/sh
# Setting this, so the repo does not need to be given on the commandline:
# export BORG_REPO=ssh://username@example.com:2022/~/backup/main
#export BORG_REPO=~/backup/
# See the section "Passphrase notes" for more infos.
#export BORG_PASSPHRASE='1ChagearC'
export BORG_REPO="ssh://100.121.203.110:2222/./repo/borg-repo"
export BORG_PASSPHRASE="1ChagearC" # Encryption key
BACKUP_SOURCES=(
"/home/liph/Documents"
"/home/liph/Pictures"
"/home/liph/scripts"
) # What to back up
BACKUP_NAME="server-$(date +%Y-%m-%d)" # Dynamic backup name
# some helpers and error handling:
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
info "Starting backup"
# Initialize Borg repo (if not exists)
borg init --encryption=repokey "$BORG_REPO" 2>/dev/null || true
# Backup the most important directories into an archive named after
# the machine this script is currently running on:
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--progress \
--compression lz4 \
--exclude-caches \
--exclude 'home/*/.cache/*' \
--exclude 'var/tmp/*' \
"$BORG_REPO::$BACKUP_NAME" \
"${BACKUP_SOURCES[@]}" \
# ::'{hostname}-{user}-{now}' \
# /home/liph/Documents/ \
# /home/liph/Pictures/ \
# /home/liph/Downloads/
# /etc \
# /home \
# /root \
# /var
backup_exit=$?
info "Pruning repository"
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-*' matching is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:
borg prune \
--list \
--glob-archives '{hostname}-*' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6
"$BORG_REPO"
prune_exit=$?
# actually free repo disk space by compacting segments
info "Compacting repository"
borg compact
compact_exit=$?
# use highest exit code as global exit code
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
if [ ${global_exit} -eq 0 ]; then
info "Backup, Prune, and Compact finished successfully"
elif [ ${global_exit} -eq 1 ]; then
info "Backup, Prune, and/or Compact finished with warnings"
else
info "Backup, Prune, and/or Compact finished with errors"
fi
exit ${global_exit}
# Check backup integrity
borg check "$BORG_REPO"
-95
View File
@@ -1,95 +0,0 @@
#!/bin/sh
# Setting this, so the repo does not need to be given on the commandline:
# export BORG_REPO=ssh://username@example.com:2022/~/backup/main
#export BORG_REPO=~/backup/
# See the section "Passphrase notes" for more infos.
#export BORG_PASSPHRASE='1ChagearC'
export BORG_REPO="ssh://100.121.203.110:2222/./repo/borg-repo"
export BORG_PASSPHRASE="1ChagearC" # Encryption key
BACKUP_SOURCES=(
"/home/liph/Documents"
"/home/liph/Pictures"
"/home/liph/scripts"
) # What to back up
BACKUP_NAME="laptop-$(date +%Y-%m-%d)" # Dynamic backup name
# some helpers and error handling:
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
info "Starting backup"
# Initialize Borg repo (if not exists)
borg init --encryption=repokey "$BORG_REPO" 2>/dev/null || true
# Backup the most important directories into an archive named after
# the machine this script is currently running on:
borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--progress \
--compression lz4 \
--exclude-caches \
--exclude 'home/*/.cache/*' \
--exclude 'var/tmp/*' \
"$BORG_REPO::$BACKUP_NAME" \
"${BACKUP_SOURCES[@]}" \
# ::'{hostname}-{user}-{now}' \
# /home/liph/Documents/ \
# /home/liph/Pictures/ \
# /home/liph/Downloads/
# /etc \
# /home \
# /root \
# /var
backup_exit=$?
info "Pruning repository"
# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-*' matching is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:
borg prune \
--list \
--glob-archives '{hostname}-*' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6
"$BORG_REPO"
prune_exit=$?
# actually free repo disk space by compacting segments
info "Compacting repository"
borg compact
compact_exit=$?
# use highest exit code as global exit code
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
if [ ${global_exit} -eq 0 ]; then
info "Backup, Prune, and Compact finished successfully"
elif [ ${global_exit} -eq 1 ]; then
info "Backup, Prune, and/or Compact finished with warnings"
else
info "Backup, Prune, and/or Compact finished with errors"
fi
exit ${global_exit}
# Check backup integrity
borg check "$BORG_REPO"
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
-5
View File
@@ -1,5 +0,0 @@
# Convert your aerc/maildir to vCards
em2vcf /mnt/flash1/mail-server/mail/maildir/ \
--output-folder ~/.contacts_mail/ \
--no-duplicates \
--overwrite
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
-17
View File
@@ -1,17 +0,0 @@
#!/bin/bash
# Save as ~/.config/niri/scripts/fix-bitwarden.sh
# Make executable: chmod +x ~/.config/niri/scripts/fix-bitwarden.sh
niri msg -j event-stream | jq --unbuffered -r '
select(.WindowOpenedOrChanged) |
.WindowOpenedOrChanged.window |
select(
(.title? | match("Extension:.*LibreWolf")) and
.is_floating == false
) |
.id
' | while read id; do
niri msg action toggle-window-floating --id="$id"
niri msg action set-window-height 50%
niri msg action set-window-width 20%
done
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
+120
View File
@@ -0,0 +1,120 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.5
Date: 2024-04-21
File: 1099-INT.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.5 Fix 'latexpdf' errors with missing data
1.4 Correct values passed into 'taxformpart' block
1.3 Document available variables; replace deprecated ones
1.2 Fix syntax error
1.1 Merged xelatex targetting templates with those targetting pdflatex
This template has the following variables available:
SETTINGS:
company_name
company_address
company_phone
company_fax
company_email
businessnumber
results:
- id
legal_name
entity_id
entity_class
control_code
meta_number
tax_id
sales_tax_id
acc_sum
invoice_sum
total_sum
invnumber (1)
duedate (1)
invoice_id (1)
line_one
line_two
line_three
city
state
mail_code
(1): These fields are only available when the report being printed
is a detailed report (as opposed to a summary report).
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass[usletter]{article}
\usepackage{textpos}
\usepackage[top=0.0in, bottom=0in, left=0in, right=0in]{geometry}
\setlength{\parindent}{0pt}
\setlength{\TPHorizModule}{1in}
\setlength{\TPVertModule}{1in}
<?lsmb BLOCK taxformpart ?>
\begin{textblock}{4}[0,1](1, 1.5)
<?lsmb SETTINGS.company_name || 'No Company Name set in System Defaults' ?>\\
<?lsmb SETTINGS.company_address || 'No Company Address set in System Defaults' ?>\\
Tel: <?lsmb SETTINGS.company_phone ?>
\end{textblock}
\begin{textblock}{2}[0,1](1, 3.5)
<?lsmb SETTINGS.businessnumber ?>
\end{textblock}
\begin{textblock}{2}[0,1](3, 3.5)
<?lsmb taxnumber ?>
\end{textblock}
\begin{textblock}{4}[0,1](1, 4)
<?lsmb legal_name ?>\\
<?lsmb IF line_one ?>
<?lsmb line_one ?>\\
<?lsmb IF line_two ?><?lsmb line_two ?>\\ <?lsmb END ?>
<?lsmb IF line_three ?><?lsmb line_three ?>\\ <?lsmb END ?>
<?lsmb ELSE -?>
No billing or physical address set \\
<?lsmb END # line_one ?>
<?lsmb city ?>, <?lsmb state ?> <?lsmb mail_code ?>
\end{textblock}
\begin{textblock}{2}[0,1](4.5, 1.5)
<?lsmb total_sum ?>
\end{textblock}
<?lsmb END # Block taxformpart ?>
<?lsmb BLOCK taxform ?>
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb END #BLOCK taxform ?>
\begin{document}
<?lsmb FOR tf in results ?>
<?lsmb INCLUDE taxform
legal_name = tf.legal_name
line_one = tf.line_one
line_two = tf.line_two
line_three = tf.line_three
city = tf.city
state = tf.state
mail_code = tf.mail_code
taxnumber = tf.taxnumber
total_sum = tf.total_sum ;
END # FOR tf ?>
\end{document}
<?lsmb END # FILTER latex -?>
+128
View File
@@ -0,0 +1,128 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.4
Date: 2024-04-21
File: 1099-MISC.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.4 Fix 'latexpdf' errors with missing data
1.3 Correct values passed into 'taxformpart' block
1.2 Document available variables; replace deprecated ones
1.1 Merged xelatex targetting templates with those targetting pdflatex
This template has the following variables available:
SETTINGS:
company_name
company_address
company_phone
company_fax
company_email
businessnumber
results:
- id
legal_name
entity_id
entity_class
control_code
meta_number
tax_id
sales_tax_id
acc_sum
invoice_sum
total_sum
invnumber (1)
duedate (1)
invoice_id (1)
line_one
line_two
line_three
city
state
mail_code
(1): These fields are only available when the report being printed
is a detailed report (as opposed to a summary report).
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass[usletter]{article}
\usepackage{textpos}
\usepackage[top=0.0in, bottom=0in, left=0in, right=0in]{geometry}
\setlength{\parindent}{0pt}
\setlength{\TPHorizModule}{1in}
\setlength{\TPVertModule}{1in}
<?lsmb BLOCK taxformpart
# Defines a repeatable block of TeX commands
?>
\begin{textblock}{4}[0,1](1, 1.5)
<?lsmb SETTINGS.company_name || 'No Company Name set in System Defaults' ?>\\
<?lsmb SETTINGS.company_address || 'No Company Address set in System Defaults' ?>\\
Tel: <?lsmb SETTINGS.company_phone ?>
\end{textblock}
\begin{textblock}{2}[0,1](1, 3.5)
<?lsmb SETTINGS.businessnumber ?>
\end{textblock}
\begin{textblock}{2}[0,1](3, 3.5)
<?lsmb taxnumber ?>
\end{textblock}
\begin{textblock}{4}[0,1](1, 4)
<?lsmb legal_name ?>\\
<?lsmb IF street1 ?>
<?lsmb street1 ?>\\
<?lsmb IF street2 ?><?lsmb street2 ?>\\ <?lsmb END ?>
<?lsmb IF street3 ?><?lsmb street3 ?>\\ <?lsmb END ?>
<?lsmb ELSE -?>
No billing or physical address set \\
<?lsmb END # street1 ?>
<?lsmb city ?>, <?lsmb state ?> <?lsmb mail_code ?>
\end{textblock}
\begin{textblock}{2}[0,1](4.5, 4.5)
<?lsmb total_sum ?>
\end{textblock}
<?lsmb END # Block taxformpart ?>
<?lsmb BLOCK taxform
# Defines a repeatable block of TeX commands
?>
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb PROCESS taxformpart ?>
\clearpage
<?lsmb END #BLOCK taxform ?>
\begin{document}
<?lsmb
# Executes the actual form
FOREACH tf IN results;
INCLUDE taxform
legal_name = tf.legal_name
street1 = tf.line_one
street2 = tf.line_two
street3 = tf.line_three
city = tf.city
state = tf.state
mail_code = tf.mail_code
taxnumber = tf.taxnumber
total_sum = tf.total_sum;
END # FOR tf ?>
\end{document}
<?lsmb END # FILTER latex -?>
+26
View File
@@ -0,0 +1,26 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2024-10-08
File: PNL.csv
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.2 Restore 'heading_account' column (turning out not-spurious)
1.1 Remove spurious 'heading_account' column
-?>
account,description,is_heading,heading_account<?lsmb
FOREACH col IN report.sorted_col_ids -?>
,"<?lsmb report.cheads.ids.$col.props.description ?>"<?lsmb END; ?>
<?lsmb FOREACH row IN report.sorted_row_ids ; -?>
<?lsmb report.rheads.ids.$row.props.account_number -?>,"<?lsmb report.rheads.ids.$row.props.account_description ?>",<?lsmb IF report.rheads.ids.$row.props.account_type == 'H' -?>Y<?lsmb ELSE ?>N<?lsmb END ?>,<?lsmb
PARENT = report.rheads.ids.$row.parent_id ;
report.rheads.ids.$PARENT.props.account_number ?><?lsmb
FOREACH col IN report.sorted_col_ids ; -?>
,<?lsmb report.cells.$row.$col -?><?lsmb
END; ?>
<?lsmb END; -?>
Can't render this file because it contains an unexpected character in line 18 and column 53.
+376
View File
@@ -0,0 +1,376 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 2.2
Date: 2026-02-19
File: PNL.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
2.0 Created clickable section heads to collapse parts of hierarchical reports
2.1 Simplify indentation calculations; many values are provided as variables as-of 1.13
2.2 Fix address not showing below the company name
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb title ?></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<style type="text/css">
table.c1 {border-collapse: collapse}
.flat-hierarchy .balancesheet .report-head th {
font-weight: bold;
text-align: right;
white-space: pre;
}
.flat-hierarchy .balancesheet .section1.QL,
.flat-hierarchy .income_statement .section1 {
border: none;
display: none;
}
.flat-hierarchy .balancesheet .section1,
.flat-hierarchy .balancesheet .section2,
.flat-hierarchy .income_statement .section2 {
border-bottom: 3px double black;
font-size: large;
}
.financial-statement.flat-hierarchy .heading1,
.financial-statement.flat-hierarchy .balancesheet .heading2 {
border-top: 1px solid black;
font-weight: bold;
height: 2em;
vertical-align: top;
}
.financial-statement.flat-hierarchy .income_statement .heading2 {
border-top: 1px solid black;
font-size: bigger;
font-style: italic;
height: 2em;
vertical-align: top;
}
.financial-statement.flat-hierarchy table {
margin-top: 3em;
min-width: 60ex;
}
.financial-statement.flat-hierarchy table td,
.financial-statement.flat-hierarchy table th {
padding-bottom: 3px; /* add space for the dashed line underlining hovered amounts */
}
.financial-statement .company-name {
font-family: monospace;
margin-top: 2em;
text-align: center;
}
.financial-statement .company-address {
font-family: monospace;
font-size: smaller;
text-align: center;
}
#PNL a {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:link {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:visited {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:hover {
background-color: inherit;
border-bottom: thin dashed;
color: inherit;
text-decoration: none;
}
#PNL td.amount {
padding-left: 0.5em;
text-align: right;
}
#PNL tr.separator {
min-height: 1em;
}
#PNL tr.sectionhead th {
font-weight: bold;
margin-top: 4em;
padding-top: 2em;
text-align: right;
}
#PNL td.total {
border: 0;
border-color: black;
border-style: solid;
border-top: 1px;
}
#PNL th {
padding-left: 5px;
}
#PNL table {
margin-left: auto;
margin-right: auto;
}
#PNL h1,
h2 {
text-align: center;
}
#PNL th[colspan="1"].indent {
width: 1em;
}
#PNL th[colspan="2"].indent {
width: 2em;
}
#PNL th[colspan="3"].indent {
width: 3em;
}
#PNL th[colspan="4"].indent {
width: 4em;
}
#PNL th[colspan="5"].indent {
width: 5em;
}
#PNL th[colspan="6"].indent {
width: 6em;
}
#PNL th[colspan="7"].indent {
width: 7em;
}
#PNL th[colspan="8"].indent {
width: 8em;
}
#PNL th[colspan="9"].indent {
width: 9em;
}
#PNL td.heading1,
#PNL th.heading1 {
border-bottom: 1px solid black;
border-top: 1px solid black;
font-weight: bold;
padding-bottom: 1em;
}
#PNL td.heading2,
#PNL th.heading2 {
font-style: italic;
font-weight: bold;
}
#PNL table.balancesheet {
border-top: 1px solid black;
margin-top: 2em;
}
#PNL .amount {
padding-left: 0.5em;
}
.financial-statement h1,
.financial-statement h2 {
text-align: center;
}
.financial-statement table {
margin-left: auto;
margin-right: auto;
}
.financial-statement td.amount {
padding-left: 4em;
text-align: right;
}
.financial-statement tr.total td,
.financial-statement tr.total th {
padding-bottom: 2em;
}
.financial-statement tr.total td.amount {
border-top: thick double black;
}
.financial-statement th {
text-align: left;
}
.financial-statement tr.section-head th,
.financial-statement tr.total th {
text-align: center;
}
.financial-statement a,
.financial-statement a:visited {
color: black;
text-decoration: none;
}
.heading3.H {
padding-bottom: 1em;
}
.heading2.H {
padding-bottom: 1.5em;
}
.heading4.H {
padding-bottom: 0.75em;
}
.section1 {
font-size: 140%;
}
.section2 {
font-size: 120%;
}
.section3 {
font-size: 110%;
}
.H {
font-style: italic;
}
.section4 {
font-size: 105%;
}
th {
font-weight: normal;
}
@media print {
.non-printed {
display: none;
}
}
</style>
<script>
let lvl = {};
function toggle(tgt,cls) {
let elms = document.querySelectorAll(tgt+' .'+cls);
let newState = lvl[cls] ? '' : 'none';
lvl[cls] = !lvl[cls];
for ( var e = elms.length - 1; e >= 0; e-- ) {
elms[e].style.display = newState;
}
}
</script></head><?lsmb
account_data = report.account_data;
max_path_depth = report.rheads.max_path_depth;
IF report.legacy_hierarchy ;
hierarchy = 'flat-hierarchy';
ELSE ;
hierarchy = 'full-hierarchy';
END ;
?>
<body class="financial-statement <?lsmb dojo_theme ?> <?lsmb hierarchy ?>">
<div id="PNL" class="financial-statement <?lsmb hierarchy ?>">
<!-- Also used in balance sheet! -->
<h1><?lsmb name ?></h1>
<div class="company-name">
<?lsmb SETTINGS.company_name ?>
</div>
<div class="company-address">
<?lsmb SETTINGS.company_address ?>
</div>
<table class="income_statement c1">
<colgroup class="headings">
<?lsmb i = 1;
WHILE i <= max_path_depth;
' <col class="level' _ i _ '" />';
i = i + 1;
END;
?>
</colgroup>
<colgroup class="values">
<?lsmb i = 1;
WHILE i <= report.cheads.ids.size;
' <col class="values' _ i _ '" />';
i = i + 1;
END;
?>
</colgroup>
<thead>
<tr class="report-head">
<th colspan="<?lsmb max_path_depth ?>">
</th><?lsmb FOREACH col IN report.sorted_col_ids -?>
<th><?lsmb report.cheads.ids.$col.props.description ?></th><?lsmb END -?>
</tr>
</thead>
<tbody>
<?lsmb FOREACH row IN report.sorted_row_ids ;
row_data = report.rheads.ids.$row;
path_depth = row_data.path_depth;
path_prefix_len = row_data.path_prefix_len;
path_suffix_len = row_data.path_suffix_len;
IF row_data.props.account_type == 'H' ;
class = 'class="heading' _ path_depth _ ' ' _ row_data.props.account_type _ '"';
clazz = "heading" _ path_depth _ ' ' _ row_data.props.account_type;
row_type = 'H';
ELSIF row_data.props.section_for ;
class = 'class="section' _ path_depth _ ' ' _ row_data.heading_props.account_category _ '"';
clazz = "section" _ path_depth _ ' ' _ row_data.heading_props.account_category;
row_type = 'H';
ELSE;
class = 'class="account"';
clazz = 'account';
row_type = 'A';
END;
?>
<tr class="<?lsmb FOREACH sec IN row_data.path ; IF NOT loop.last(); " sub-" _ sec ; END; END; ?>" <?lsmb IF row_type == 'H' ; ?> onclick="toggle('', 'sub-<?lsmb row_data.path.last ?>')" <?lsmb END ?> >
<?lsmb IF report.legacy_hierarchy ?>
<?lsmb IF path_prefix_len > 0 ?>
<th colspan="<?lsmb path_prefix_len ?>" class="indent">&nbsp;</th>
<?lsmb END ?>
<?lsmb ELSE ?>
<?lsmb- FILTER repeat(path_prefix_len) -?>
<th class="indent">&nbsp;</th>
<?lsmb- END -?>
<?lsmb- END -?>
<th colspan="<?lsmb path_suffix_len ?>" <?lsmb class ?>>
<?lsmb IF row_data.props.section_for ;
row_data.props.row_description ?></th>
<th colspan="<?lsmb report.cheads.ids.size ?>" <?lsmb class ?>>
<?lsmb ELSE -?>
<?lsmb row_data.props.row_description ?></th><?lsmb FOREACH col IN report.sorted_col_ids -?>
<td class="amount <?lsmb clazz ?>">
<?lsmb report.cells.$row.$col ?>
</td><?lsmb END ?><?lsmb END ?>
</tr><?lsmb END ?>
</tbody>
</table>
</div>
<p class="non-printed">Click on the headings to collapse sections.</p>
</body>
</html>
+112
View File
@@ -0,0 +1,112 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.3
Date: 2025-08-30
File: PNL.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
1.2 Fixed company address not showing
1.3 Simplify indentation calculations; as of 1.13, many pre-calculated
values are provided as variables
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
<?lsmb
max_path_depth = report.rheads.max_path_depth;
last_col_no = max_path_depth + 1 + report.sorted_col_ids.size;
IF report.legacy_hierarchy ;
hierarchy = 'flat-hierarchy';
ELSE ;
hierarchy = 'full-hierarchy';
END ;
-?>
\documentclass[10pt]{article}
\usepackage{longtable}
\usepackage[<?lsmb SETTINGS.papersize ?>paper,top=2cm,bottom=1.5cm,left=1.1cm,right=1.5cm]{geometry}
\begin{document}
\renewcommand\baselinestretch{1.2}\selectfont
\begin{center}
\Huge{<?lsmb text('Income Statement') ?>}
\small{
\texttt{<?lsmb SETTINGS.company_name ?>}
\texttt{<?lsmb SETTINGS.company_address ?>}
}
\end{center}
\begin{longtable}{@{\extracolsep{'0pt}}<?lsmb l = 'l'; l.repeat(max_path_depth);
-?>p{2cm}<?lsmb l = 'r'; l.repeat(report.sorted_col_ids.size); ?>}
\\
\multicolumn{<?lsmb max_path_depth ?>}{l}{} &%
<?lsmb
FOREACH col IN report.sorted_col_ids;
' & \shortstack{';
report.cheads.ids.$col.props.description ;
'} ';
END;
?> \\
\\
<?lsmb FOREACH row IN report.sorted_row_ids ;
row_data = report.rheads.ids.$row;
path_depth = row_data.path_depth;
path_prefix_len = row_data.path_prefix_len;
path_suffix_len = row_data.path_suffix_len;
IF row_data.props.section_for;
IF row_data.heading_props.account_category == 'Q';
NEXT;
END;
END;
desc = row_data.props.row_description;
IF row_data.props.account_type != 'A';
IF row_data.props.section_for ;
desc = '\Large{' _ row_data.props.row_description _ '}';
ELSE;
'\cline{' _ path_depth _ '-' _ last_col_no _ '} ';
END;
desc = '\textbf{\emph{' _ desc _ '}}';
END ;
-?>%
%
<?lsmb amp = '& '; amp.repeat(path_prefix_len); -?>
<?lsmb IF path_suffix_len > 1 -?>
\multicolumn{<?lsmb path_suffix_len ?>}{l}{<?lsmb desc ?>}%
<?lsmb ELSE -?>
<?lsmb desc ?>
<?lsmb END -?>
%
& %
<?lsmb FOREACH col IN report.sorted_col_ids;
' & '; report.cells.$row.$col;
END; -?>
%
\\
%
<?lsmb IF row_data.props.account_type != 'A'; -?>
<?lsmb IF row_data.props.section_for; -?>
\cline{<?lsmb path_depth ?>-<?lsmb last_col_no ?>}
\noalign{\vskip 2pt}
\cline{<?lsmb path_depth ?>-<?lsmb last_col_no ?>}
<?lsmb ELSE -?>
\\
<?lsmb END -?>
<?lsmb END -?>
<?lsmb END -?>
\end{longtable}
\end{document}
<?lsmb END -?>
+16
View File
@@ -0,0 +1,16 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-03-28
File: ap_transaction.csv
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
account,amount,description,project
<?lsmb FOREACH amount ?><?lsmb lc = loop.index ?><?lsmb accno.${lc} ?>,<?lsmb account.${lc} ?>,<?lsmb amount.${lc} ?>,<?lsmb linedescription.${lc} ?>,<?lsmb projectnumber.${lc} ?>
<?lsmb END ?><?lsmb FOREACH t IN taxaccounts.split(' ') ?><?lsmb loop_count = loop.index -?>
<?lsmb t.remove('"') ?>,<?lsmb tax.${loop_count} ?>,<?lsmb taxdescription.${loop_count} ?>,
<?lsmb END ?>
Can't render this file because it contains an unexpected character in line 15 and column 18.
+182
View File
@@ -0,0 +1,182 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-03-28
File: ap_transaction.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('AP Transaction') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
span.c2 {font-size: 64%}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('AP Transaction') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr valign="top">
<td>
<?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb contact ?><br>
<?lsmb END ?> <?lsmb IF vendorphone ?><br>
<?lsmb text('Tel: [_1]', vendorphone) ?> <?lsmb END ?> <?lsmb IF vendorfax ?><br>
<?lsmb text('Fax: [_1]', vendorfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?> <?lsmb IF vendortaxnumber ?>
<p><?lsmb text('Taxnumber: [_1]', vendortaxnumber) ?> <?lsmb END ?></p>
</td>
<td align="right">
<table>
<tr>
<th align="left" nowrap><?lsmb text('Invoice #') ?></th>
<td><?lsmb invnumber ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Date') ?></th>
<td><?lsmb invdate ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Due') ?></th>
<td><?lsmb duedate ?></td>
</tr><?lsmb IF ponumber ?>
<tr>
<th align="left"><?lsmb text('PO #') ?></th>
<td><?lsmb ponumber ?>&nbsp;</td>
</tr><?lsmb END ?><?lsmb IF ordnumber ?>
<tr>
<th align="left"><?lsmb text('Order #') ?></th>
<td><?lsmb ordnumber ?>&nbsp;</td>
</tr><?lsmb END ?>
<tr>
<th align="left" nowrap><?lsmb text('Employee') ?></th>
<td><?lsmb employee ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table>
<?lsmb FOREACH account ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td><?lsmb accno.${loop_count} ?></td>
<td><?lsmb account.${loop_count} ?></td>
<td width="10"></td>
<td align="right"><?lsmb amount.${loop_count} ?></td>
<td width="10"></td>
<td><?lsmb linedescription.${loop_count}.replace("\n","<br />") ?></td>
<td width="10"></td>
<td><?lsmb projectnumber.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<td width="10"></td>
<td align="right"><?lsmb invtotal ?></td><?lsmb ELSE ?>
<th colspan="2" align="right"><?lsmb text('Subtotal') ?></th>
<td width="10"></td>
<td align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="2" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>@
<?lsmb taxrate.${loop_count} ?> %</th>
<td width="10"></td>
<td align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?><?lsmb IF NOT taxincluded ?>
<tr>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<td width="10"></td>
<td align="right"><?lsmb invtotal ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td><?lsmb text_amount ?>***** <?lsmb decimal ?>/100 <?lsmb currency ?></td>
</tr>
<tr>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr><?lsmb IF paid_1 ?>
<tr>
<td>&nbsp;</td>
<td>
<table>
<tr>
<th><?lsmb text('Payments') ?></th>
</tr>
<tr>
<td>
<hr noshade>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<th><?lsmb text('Date') ?></th>
<th>&nbsp;</th>
<th><?lsmb text('Source') ?></th>
<th><?lsmb text('Memo') ?></th>
<th><?lsmb text('Amount') ?></th>
</tr><?lsmb END ?><?lsmb FOREACH payment ?><?lsmb loop_count = loop.index ?>
<tr>
<td><?lsmb paymentdate.${loop_count} ?></td>
<td><?lsmb paymentaccount.${loop_count} ?></td>
<td><?lsmb paymentsource.${loop_count} ?></td>
<td><?lsmb paymentmemo.${loop_count} ?></td>
<td align="right"><?lsmb payment.${loop_count} ?></td>
</tr><?lsmb END ?><?lsmb IF paid_1 ?>
</table>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td></td>
</tr><?lsmb IF taxincluded ?>
<tr>
<td></td>
</tr>
<tr>
<th colspan="3" align="left"><span class=
"c2"><?lsmb text('Taxes shown are included in price.') ?></span></th>
</tr><?lsmb END ?>
</table>
</body>
</html>
+138
View File
@@ -0,0 +1,138 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2022-07-22
File: ap_transaction.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Fix line descriptions not shown in AR/AP transaction prints
1.2 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\centerline{\MakeUppercase{\textbf{<?lsmb text('AP Transaction') ?>}}}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?> <?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF vendorphone ?>
Tel: <?lsmb vendorphone ?>
<?lsmb END ?>
<?lsmb IF vendorfax ?>
Fax: <?lsmb vendorfax ?>
<?lsmb END ?>
<?lsmb email ?>
<?lsmb IF vendortaxnumber ?>
Tax Number: <?lsmb vendortaxnumber ?>
<?lsmb END ?>
}
\hfill
\begin{tabular}[t]{ll}
\textbf{<?lsmb text('Invoice #') ?>} & <?lsmb invnumber ?> \\
\textbf{<?lsmb text('Date') ?>} & <?lsmb invdate ?> \\
\textbf{<?lsmb text('Due') ?>} & <?lsmb duedate ?> \\
<?lsmb IF ponumber ?>
\textbf{<?lsmb text('PO #') ?>} & <?lsmb ponumber ?> \\
<?lsmb END ?>
<?lsmb IF ordnumber ?>
\textbf{<?lsmb text('Order #') ?>} & <?lsmb ordnumber ?> \\
<?lsmb END ?>
\textbf{<?lsmb text('Employee') ?>} & <?lsmb employee ?> \\
\end{tabular}
\vspace{1cm}
\begin{tabularx}{\textwidth}[t]{@{}llrX@{\hspace{1cm}}l@{}}
<?lsmb FOREACH amount ?>
<?lsmb lc = loop.index ?>
<?lsmb accno.${lc} ?> &
<?lsmb account.${lc} ?> &
<?lsmb amount.${lc} ?> &
<?lsmb linedescription.${lc} ?> &
<?lsmb projectnumber.${lc} ?> \\
<?lsmb END ?>
\multicolumn{2}{r}{\textbf{Subtotal}} & <?lsmb subtotal ?> & \\
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
\multicolumn{2}{r}{\textbf{<?lsmb taxdescription.${lc} ?> @ <?lsmb taxrate.${lc} ?> \%}} & <?lsmb tax.${lc} ?> & \\
<?lsmb END ?>
\multicolumn{2}{r}{\textbf{Total}} & <?lsmb invtotal ?> & \\
\end{tabularx}
\vspace{0.3cm}
<?lsmb text_amount ?> ***** <?lsmb decimal ?>/100 <?lsmb currency ?>
<?lsmb IF notes ?>
\vspace{0.3cm}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
<?lsmb END ?>
\vspace{0.3cm}
<?lsmb IF paid_1 ?>
\begin{tabular}{@{}llllr@{}}
\multicolumn{5}{c}{\textbf{<?lsmb text('Payments') ?>}} \\
\hline
\textbf{<?lsmb text('Date') ?>} & & \textbf{<?lsmb text('Source') ?>} & \textbf{<?lsmb text('Memo') ?>} & \textbf{<?lsmb text('Amount') ?>} \\
<?lsmb END ?>
<?lsmb FOREACH payment ?>
<?lsmb lc = loop.index ?>
<?lsmb paymentdate.${lc} ?> & <?lsmb paymentaccount.${lc} ?> & <?lsmb paymentsource.${lc} ?> & <?lsmb paymentmemo.${lc} ?> & <?lsmb payment.${lc} ?> \\
<?lsmb END ?>
<?lsmb IF paid_1 ?>
\end{tabular}
<?lsmb END ?>
\end{document}
<?lsmb END -?>
+16
View File
@@ -0,0 +1,16 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-03-28
File: ar_transaction.csv
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
account,description,amount,memo,project
<?lsmb FOREACH amount ?><?lsmb lc = loop.index ?><?lsmb accno.${lc} ?>,<?lsmb account.${lc} ?>,<?lsmb amount.${lc} ?>,<?lsmb linedescription.${lc} ?>,<?lsmb projectnumber.${lc} ?>
<?lsmb END ?><?lsmb FOREACH t IN taxaccounts.split(' ') ?><?lsmb loop_count = loop.index -?>
<?lsmb t.remove('"') ?>,<?lsmb taxdescription.${loop_count} ?>,<?lsmb tax.${loop_count} ?>,,,
<?lsmb END ?>
Can't render this file because it contains an unexpected character in line 15 and column 18.
+182
View File
@@ -0,0 +1,182 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-03-28
File: ar_transaction.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('AR Transaction') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
span.c2 {font-size: 64%}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('AR Transaction') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb contact ?><br>
<?lsmb END ?> <?lsmb IF customerphone ?><br>
<?lsmb text('Tel:') _ ' ' _ customerphone ?> <?lsmb END ?> <?lsmb IF customerfax ?><br>
<?lsmb text('Fax:') _ ' ' _ customerfax ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?> <?lsmb IF customertaxnumber ?><br>
<?lsmb text('Taxnumber:') _ ' ' _ customertaxnumber ?> <?lsmb END ?></td>
<td align="right">
<table>
<tr>
<th align="left" nowrap><?lsmb text('Invoice #') ?></th>
<td><?lsmb invnumber ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Date') ?></th>
<td><?lsmb invdate ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Due') ?></th>
<td><?lsmb duedate ?></td>
</tr><?lsmb IF ponumber ?>
<tr>
<th align="left"><?lsmb text('PO #') ?></th>
<td><?lsmb ponumber ?>&nbsp;</td>
</tr><?lsmb END ?><?lsmb IF ordnumber ?>
<tr>
<th align="left"><?lsmb text('Order #') ?></th>
<td><?lsmb ordnumber ?>&nbsp;</td>
</tr><?lsmb END ?>
<tr>
<th align="left" nowrap><?lsmb text('Salesperson') ?></th>
<td><?lsmb employee ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table>
<?lsmb FOREACH account ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td><?lsmb accno.${loop_count} ?></td>
<td><?lsmb account.${loop_count} ?></td>
<td width="10">&nbsp;</td>
<td align="right"><?lsmb amount.${loop_count} ?></td>
<td width="10">&nbsp;</td>
<td><?lsmb linedescription.${loop_count}.replace("\n","<br />") ?></td>
<td width="10">&nbsp;</td>
<td><?lsmb projectnumber.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<td width="10">&nbsp;</td>
<td align="right"><?lsmb invtotal ?></td><?lsmb ELSE ?>
<th colspan="2" align="right"><?lsmb text('Subtotal') ?></th>
<td width="10">&nbsp;</td>
<td align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="2" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>@
<?lsmb taxrate.${loop_count} ?> %</th>
<td width="10">&nbsp;</td>
<td align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?><?lsmb IF NOT taxincluded ?>
<tr>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<td width="10">&nbsp;</td>
<td align="right"><?lsmb invtotal ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td><?lsmb text_amount ?>***** <?lsmb decimal ?>/100 <?lsmb currency ?></td>
</tr>
<tr>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr><?lsmb IF paid_1 ?>
<tr>
<td>
<table>
<tr>
<th><?lsmb text('Payments') ?></th>
</tr>
<tr>
<td>
<hr noshade>
</td>
</tr>
<tr>
<td>
<table>
<tr>
<th><?lsmb text('Date') ?></th>
<th>&nbsp;</th>
<th><?lsmb text('Source') ?></th>
<th><?lsmb text('Amount') ?></th>
</tr><?lsmb END ?><?lsmb FOREACH payment ?><?lsmb loop_count = loop.index ?>
<tr>
<td><?lsmb paymentdate.${loop_count} ?></td>
<td><?lsmb paymentaccount.${loop_count} ?></td>
<td><?lsmb paymentsource.${loop_count} ?></td>
<td align="right"><?lsmb payment.${loop_count} ?></td>
</tr><?lsmb END ?><?lsmb IF paid_1 ?>
</table>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td></td>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="9" align="left"><span class=
"c2"><?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>
<?lsmb text('Registration') _ ' ' _ taxnumber.${loop_count} ?></span></th>
</tr><?lsmb END ?><?lsmb IF taxincluded ?>
<tr>
<td></td>
</tr>
<tr>
<th colspan="3" align="left"><span class=
"c2"><?lsmb text('Taxes shown are included in price.') ?></span></th>
</tr><?lsmb END ?>
</table>
</body>
</html>
+163
View File
@@ -0,0 +1,163 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2022-07-22
File: ar_transaction.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Fix line descriptions not shown in AR/AP transaction prints
1.2 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
\parbox{\textwidth}{%
\parbox[b]{.42\textwidth}{%
<?lsmb company ?>
<?lsmb address ?>
}
%\parbox[b]{.2\textwidth}{
%\includegraphics[scale=0.3]{ledger-smb}
%}
\hfill
\begin{tabular}[b]{rr@{}}
<?lsmb text('Tel:') ?> & <?lsmb tel ?>\\
<?lsmb text('Fax:') ?> & <?lsmb fax ?>
\end{tabular}
\rule[1.5em]{\textwidth}{0.5pt}
}
\centerline{\MakeUppercase{<?lsmb text('AR Transaction') ?>}}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
<?lsmb END ?>
\vspace{0.2cm}
<?lsmb IF customerphone ?>
<?lsmb text('Tel: [_1]', customerphone) ?>
<?lsmb END ?>
<?lsmb IF customerfax ?>
<?lsmb text('Fax: [_1]', customerfax) ?>
<?lsmb END ?>
<?lsmb email ?>
<?lsmb IF customertaxnumber ?>
<?lsmb text('Tax Number: [_1]', customertaxnumber) ?>
<?lsmb END ?>
}
\hfill
\begin{tabular}[t]{ll}
\textbf{<?lsmb text('Invoice #') ?>} & <?lsmb invnumber ?> \\
\textbf{<?lsmb text('Date') ?>} & <?lsmb invdate ?> \\
\textbf{<?lsmb text('Due') ?>} & <?lsmb duedate ?> \\
<?lsmb IF ponumber ?>
\textbf{PO \#} & <?lsmb ponumber ?> \\
<?lsmb END ?>
<?lsmb IF ordnumber ?>
\textbf{<?lsmb text('Order #') ?>} & <?lsmb ordnumber ?> \\
<?lsmb END ?>
\textbf{<?lsmb text('Employee') ?>} & <?lsmb employee ?> \\
\end{tabular}
\vspace{1cm}
\begin{tabularx}{\textwidth}[t]{@{}llrX@{\hspace{1cm}}l@{}}
<?lsmb FOREACH amount ?>
<?lsmb lc = loop.index ?>
<?lsmb accno.${lc} ?> &
<?lsmb account.${lc} ?> &
<?lsmb amount.${lc} ?> &
<?lsmb linedescription.${lc} ?> &
<?lsmb projectnumber.${lc} ?> \\
<?lsmb END ?>
\multicolumn{2}{r}{\textbf{Subtotal}} & <?lsmb subtotal ?> & \\
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
\multicolumn{2}{r}{\textbf{<?lsmb taxdescription.${lc} ?> @ <?lsmb taxrate.${lc} ?> \%}} & <?lsmb tax.${lc} ?> & \\
<?lsmb END ?>
\multicolumn{2}{r}{\textbf{Total}} & <?lsmb invtotal ?> & \\
\end{tabularx}
\vspace{0.3cm}
<?lsmb text_amount ?> ***** <?lsmb decimal ?>/100 <?lsmb currency ?>
<?lsmb IF notes ?>
\vspace{0.3cm}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
<?lsmb END ?>
\vspace{0.3cm}
<?lsmb IF paid_1 ?>
\begin{tabular}{@{}lllr@{}}
\multicolumn{5}{c}{\textbf{<?lsmb text('Payments') ?>}} \\
\hline
\textbf{<?lsmb text('Date') ?>} & & \textbf{<?lsmb text('Source') ?>} &
\textbf{<?lsmb text('Amount') ?>} \\
<?lsmb END ?>
<?lsmb FOREACH payment ?>
<?lsmb lc = loop.index ?>
<?lsmb paymentdate.${lc} ?> & <?lsmb paymentaccount.${lc} ?> & <?lsmb paymentsource.${lc} ?> & <?lsmb payment.${lc} ?> \\
<?lsmb END ?>
<?lsmb IF paid_1 ?>
\end{tabular}
<?lsmb END ?>
\vspace{0.5cm}
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
\textbf{\scriptsize <?lsmb taxdescription.${lc} _ ' ' _ text('Registration') _ ' ' _ taxnumber.${lc} ?>} \\
<?lsmb END ?>
\end{document}
<?lsmb END -?>
+26
View File
@@ -0,0 +1,26 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2024-10-08
File: balance_sheet.csv
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.2 Restore 'heading_account' column (turning out not-spurious)
1.1 Fix comparison columns and remove spurious 'heading_account' column
-?>
account,description,is_heading,heading_account<?lsmb
FOREACH col IN report.sorted_col_ids -?>
,"<?lsmb report.cheads.ids.$col.props.description ?>"<?lsmb END; ?>
<?lsmb FOREACH row IN report.sorted_row_ids ; -?>
<?lsmb report.rheads.ids.$row.props.account_number -?>,"<?lsmb report.rheads.ids.$row.props.account_description ?>",<?lsmb IF report.rheads.ids.$row.props.account_type == 'H' -?>Y<?lsmb ELSE ?>N<?lsmb END ?>,<?lsmb
PARENT = report.rheads.ids.$row.parent_id ;
report.rheads.ids.$PARENT.props.account_number ?><?lsmb
FOREACH col IN report.sorted_col_ids ; -?>
,<?lsmb report.cells.$row.$col -?><?lsmb
END; ?>
<?lsmb END; -?>
Can't render this file because it contains an unexpected character in line 18 and column 53.
+411
View File
@@ -0,0 +1,411 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 2.3
Date: 2026-02-19
File: balance_sheet.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
2.0 Created clickable section heads to collapse parts of hierarchical reports
2.1 Simplify indentation calculations; many values are provided as variables as-of 1.13
2.2 Support sections in the column dimension (used for foreign currency reports)
2.3 Fix company address not showing below company name
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb title ?></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<style type="text/css">
table.c1 {border-collapse: collapse}
.flat-hierarchy .balancesheet .report-head th {
font-weight: bold;
text-align: right;
white-space: pre;
}
.flat-hierarchy .balancesheet .section1.QL,
.flat-hierarchy .income_statement .section1 {
border: none;
display: none;
}
.flat-hierarchy .balancesheet .section1,
.flat-hierarchy .balancesheet .section2,
.flat-hierarchy .income_statement .section2 {
border-bottom: 3px double black;
font-size: large;
}
.financial-statement.flat-hierarchy .heading1,
.financial-statement.flat-hierarchy .balancesheet .heading2 {
border-top: 1px solid black;
font-weight: bold;
height: 2em;
vertical-align: top;
}
.financial-statement.flat-hierarchy .income_statement .heading2 {
border-top: 1px solid black;
font-size: bigger;
font-style: italic;
height: 2em;
vertical-align: top;
}
.financial-statement.flat-hierarchy table {
margin-top: 3em;
min-width: 60ex;
}
.financial-statement.flat-hierarchy table td,
.financial-statement.flat-hierarchy table th {
padding-bottom: 3px; /* add space for the dashed line underlining hovered amounts */
}
.financial-statement .company-name {
font-family: monospace;
margin-top: 2em;
text-align: center;
}
.financial-statement .company-address {
font-family: monospace;
font-size: smaller;
text-align: center;
}
#PNL a {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:link {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:visited {
background-color: inherit;
color: inherit;
text-decoration: none;
}
#PNL a:hover {
background-color: inherit;
border-bottom: thin dashed;
color: inherit;
text-decoration: none;
}
#PNL td.amount {
padding-left: 0.5em;
text-align: right;
}
#PNL tr.separator {
min-height: 1em;
}
#PNL tr.sectionhead th {
font-weight: bold;
margin-top: 4em;
padding-top: 2em;
text-align: right;
}
#PNL td.total {
border: 0;
border-color: black;
border-style: solid;
border-top: 1px;
}
#PNL th {
padding-left: 5px;
text-align: left;
vertical-align: top;
}
#PNL table {
margin-left: auto;
margin-right: auto;
}
#PNL h1,
h2 {
text-align: center;
}
#PNL th[colspan="1"].indent {
width: 1em;
}
#PNL th[colspan="2"].indent {
width: 2em;
}
#PNL th[colspan="3"].indent {
width: 3em;
}
#PNL th[colspan="4"].indent {
width: 4em;
}
#PNL th[colspan="5"].indent {
width: 5em;
}
#PNL th[colspan="6"].indent {
width: 6em;
}
#PNL th[colspan="7"].indent {
width: 7em;
}
#PNL th[colspan="8"].indent {
width: 8em;
}
#PNL th[colspan="9"].indent {
width: 9em;
}
#PNL td.heading1,
#PNL th.heading1 {
border-bottom: 1px solid black;
border-top: 1px solid black;
font-weight: bold;
padding-bottom: 1em;
}
#PNL td.heading2,
#PNL th.heading2 {
font-style: italic;
font-weight: bold;
}
#PNL table.balancesheet {
border-top: 1px solid black;
margin-top: 2em;
}
#PNL .amount {
padding-left: 0.5em;
}
.financial-statement h1,
.financial-statement h2 {
text-align: center;
}
.financial-statement table {
margin-left: auto;
margin-right: auto;
}
.financial-statement td.amount {
padding-left: 4em;
text-align: right;
}
.financial-statement tr.total td,
.financial-statement tr.total th {
padding-bottom: 2em;
}
.financial-statement tr.total td.amount {
border-top: thick double black;
}
.financial-statement th {
text-align: left;
}
.financial-statement tr.section-head th,
.financial-statement tr.total th {
text-align: center;
}
.financial-statement a,
.financial-statement a:visited {
color: black;
text-decoration: none;
}
.heading3.H {
padding-bottom: 1em;
}
.heading2.H {
padding-bottom: 1.5em;
}
.heading4.H {
padding-bottom: 0.75em;
}
.section1 {
font-size: 140%;
}
.section2 {
font-size: 120%;
}
.section3 {
font-size: 110%;
}
.H {
font-style: italic;
}
.section4 {
font-size: 105%;
}
th {
font-weight: normal;
}
@media print {
.non-printed {
display: none;
}
}
</style>
<script>
let lvl = {};
function toggle(tgt,cls) {
let elms = document.querySelectorAll(tgt+' .'+cls);
let newState = lvl[cls] ? '' : 'none';
lvl[cls] = !lvl[cls];
for ( var e = elms.length - 1; e >= 0; e-- ) {
elms[e].style.display = newState;
}
}
</script></head><?lsmb
max_col_path_depth = report.cheads.max_path_depth;
max_row_path_depth = report.rheads.max_path_depth;
IF report.legacy_hierarchy ;
hierarchy = 'flat-hierarchy';
ELSE ;
hierarchy = 'full-hierarchy';
END ;
?>
<body class="financial-statement <?lsmb dojo_theme ?> <?lsmb hierarchy ?>">
<div id="PNL" class="financial-statement <?lsmb hierarchy ?> balance-sheet">
<!-- TODO: Find better name!! -->
<h1><?lsmb text('Balance Sheet') ?></h1>
<h2><?lsmb HLINES.1 ?></h2>
<div class="company-name">
<?lsmb SETTINGS.company_name ?>
</div>
<div class="company-address">
<?lsmb SETTINGS.company_address ?>
</div>
<table class="balancesheet c1">
<colgroup class="headings">
<?lsmb i = 1;
WHILE i <= max_row_path_depth;
' <col class="level' _ i _ '" />';
i = i + 1;
END;
?>
</colgroup>
<colgroup class="values">
<?lsmb i = 1;
FOREACH col IN report.sorted_col_ids ;
IF report.cheads.ids.$col.is_leaf;
NEXT;
END;
' <col class="values' _ i _ '" />';
i = i + 1;
END;
?>
</colgroup>
<thead>
<?lsmb head_level = 1;
WHILE head_level <= max_col_path_depth ; ?>
<tr class="report-head">
<th colspan="<?lsmb max_row_path_depth ?>"></th>
<?lsmb FOREACH col IN report.sorted_col_ids;
IF report.cheads.ids.$col.props.section_for;
NEXT;
END;
IF head_level == report.cheads.ids.$col.path.size -?>
<th data-id="<?lsmb col ?>"
colspan="<?lsmb report.cheads.ids.$col.leaves ?>"
rowspan="<?lsmb report.cheads.ids.$col.is_leaf ? (max_col_path_depth - report.cheads.ids.$col.path.size + 1) : 1 ?>"><?lsmb report.cheads.ids.$col.props.description ?></th>
<?lsmb END -?><?lsmb END ?>
</tr>
<?lsmb head_level = head_level + 1;
END ?>
</thead>
<tbody>
<?lsmb FOREACH row IN report.sorted_row_ids ;
row_data = report.rheads.ids.$row;
path_depth = row_data.path_depth;
path_prefix_len = row_data.path_prefix_len;
path_suffix_len = row_data.path_suffix_len;
IF row_data.props.account_type == 'H' ;
class = 'class="heading' _ path_depth _ ' ' _ row_data.props.account_type _ '"';
clazz = "heading" _ path_depth _ ' ' _ row_data.props.account_type;
row_type = 'H';
ELSIF row_data.props.section_for ;
class = 'class="section' _ path_depth _ ' ' _ row_data.heading_props.account_category _ '"';
clazz = "section" _ path_depth _ ' ' _ row_data.heading_props.account_category;
row_type = 'H';
ELSE;
class = 'class="account"';
clazz = 'account';
row_type = 'A';
END;
?>
<tr class="<?lsmb FOREACH sec IN row_data.path ; IF NOT loop.last(); " sub-" _ sec ; END; END; ?>" <?lsmb IF row_type == 'H' ; ?> onclick="toggle('', 'sub-<?lsmb row_data.path.last ?>')" <?lsmb END ?> >
<?lsmb IF report.legacy_hierarchy ?>
<?lsmb IF path_prefix_len > 0 ?>
<th colspan="<?lsmb path_prefix_len ?>" class="indent">&nbsp;</th>
<?lsmb END ?>
<?lsmb ELSE ?>
<?lsmb FILTER repeat(path_prefix_len) -?>
<th class="indent">&nbsp;</th>
<?lsmb- END -?>
<?lsmb END ?>
<th colspan="<?lsmb path_suffix_len ?>" <?lsmb class ?>>
<?lsmb IF row_data.props.section_for ;
row_data.props.row_description ?></th>
<th colspan="<?lsmb report.cheads.ids.size ?>" <?lsmb class ?>>
<?lsmb ELSE -?>
<?lsmb row_data.props.row_description ?></th><?lsmb FOREACH col IN report.sorted_col_ids;
IF not report.cheads.ids.$col.is_leaf;
NEXT;
END;
-?>
<td class="amount <?lsmb clazz ?>">
<?lsmb report.cells.$row.$col ?>
</td><?lsmb END ?><?lsmb END ?>
</tr><?lsmb END ?><!--
<h2><?lsmb text('Key Ratios'); ?></h2>
<h2><?lsmb text('First column only') ?></h2>
<table>
<tr><th><?lsmb text('Assets to Liabilities') ?></th>
<td><?lsmb report.balance_sheet.ratios.AL ?></td>
</tr>
<tr><th><?lsmb text('Assets to Equity') ?></th>
<td><?lsmb report.balance_sheet.ratios.AQ ?></td>
</tr>
<tr><th><?lsmb text('Equity to Liabilities') ?></th>
<td><?lsmb report.balance_sheet.ratios.QL ?></td>
</tr>
-->
</tbody>
</table>
</div>
<p class="non-printed">Click on the headings to collapse sections.</p>
</body>
</html>
+136
View File
@@ -0,0 +1,136 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.4
Date: 2025-08-31
File: balance_sheet.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
1.2 Fixed company address not showing
1.3 Simplify indentation calculations; as of 1.13, many pre-calculated
values are provided as variables
1.4 Support for sections in the column dimension (used for
foreign currency reports)
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } -?>
<?lsmb
max_col_path_depth = report.cheads.max_path_depth;
max_row_path_depth = report.rheads.max_path_depth;
leaf_columns = 0;
FOREACH col IN report.sorted_col_ids ;
IF report.cheads.ids.$col.is_leaf ;
leaf_columns = leaf_columns + 1;
END;
END;
last_col_no = max_row_path_depth + 1 + leaf_columns;
IF report.legacy_hierarchy ;
hierarchy = 'flat-hierarchy';
ELSE ;
hierarchy = 'full-hierarchy';
END ;
-?>
\documentclass[10pt]{article}
\usepackage{longtable}
\usepackage{multirow}
\usepackage[<?lsmb SETTINGS.papersize ?>paper,top=2cm,bottom=1.5cm,left=1.1cm,right=1.5cm]{geometry}
\begin{document}
\renewcommand\baselinestretch{1.2}\selectfont
\begin{center}
\Huge{<?lsmb text('Balance Sheet') ?>}
<?lsmb HLINES.1 ?>
\small{
\texttt{<?lsmb SETTINGS.company_name ?>}
\texttt{<?lsmb SETTINGS.company_address ?>}
}
\end{center}
\begin{longtable}{@{\extracolsep{10pt}}<?lsmb l = 'l'; l.repeat(max_row_path_depth) -?>p{2cm}<?lsmb
l = 'r'; l.repeat(report.sorted_col_ids.size); -?>}
\\
<?lsmb head_level = 1;
WHILE head_level <= max_col_path_depth; ?>
\multicolumn{<?lsmb max_row_path_depth ?>}{l}{} &%
<?lsmb
FOREACH col IN report.sorted_col_ids;
IF report.cheads.ids.$col.props.section_for;
NEXT;
END;
IF head_level == report.cheads.ids.$col.path.size ;
' & \multicolumn{'; report.cheads.ids.$col.leaves ; '}{l}{\multirow{'; report.cheads.ids.$col.is_leaf ? (max_col_path_depth - report.cheads.ids.$col.path.size + 1) : 1 ; '}{*}{\shortstack{';
report.cheads.ids.$col.props.description ;
'}}} ';
ELSIF head_level > report.cheads.ids.$col.path.size ;
' & ';
END;
END;
?> \\
<?lsmb head_level = head_level + 1;
END ?>
\\
<?lsmb FOREACH row IN report.sorted_row_ids;
row_data = report.rheads.ids.$row;
path_depth = row_data.path_depth;
path_prefix_len = row_data.path_prefix_len;
path_suffix_len = row_data.path_suffix_len;
IF row_data.props.section_for ;
IF row_data.heading_props.account_category == 'QL';
NEXT;
END;
END;
desc = row_data.props.row_description;
IF report.rheads.ids.$row.props.account_type != 'A';
IF NOT report.rheads.ids.$row.props.section_for ;
'\cline{' _ path_depth _ '-' _ last_col_no _ '} ';
ELSE;
desc = '\Large{' _ row_data.props.row_description _ '}';
END;
desc = '\textbf{\emph{' _ desc _ '}}';
END;
-?>%
<?lsmb amp = '& '; amp.repeat(path_prefix_len); -?>
<?lsmb IF path_suffix_len > 1 -?>
\multicolumn{<?lsmb path_suffix_len ?>}{l}{<?lsmb desc ?>}%
<?lsmb ELSE; ?>
<?lsmb desc ?>
<?lsmb END -?>
%
& %
<?lsmb FOREACH col IN report.sorted_col_ids;
IF report.cheads.ids.$col.props.section_for;
NEXT;
END;
' & '; report.cells.$row.$col;
END; -?>
%
\\
%
<?lsmb IF row_data.props.account_type != 'A'; -?>
<?lsmb IF row_data.props.section_for; -?>
\cline{<?lsmb path_depth ?>-<?lsmb last_col_no ?>}
\noalign{\vskip 2pt}
\cline{<?lsmb path_depth ?>-<?lsmb last_col_no ?>}
<?lsmb ELSE -?>
\\
<?lsmb END -?>
<?lsmb END ?>
<?lsmb END ?>
\end{longtable}
\end{document}
<?lsmb END -?>
+129
View File
@@ -0,0 +1,129 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: bin_list.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Bin List') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Bin List') ?></h4>
</th>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('From') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?> <?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF vendorphone ?><br>
<?lsmb text('Tel: [_1]', vendorphone) ?> <?lsmb END ?> <?lsmb IF vendorfax ?><br>
<?lsmb text('Fax: [_1]', vendorfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?> <?lsmb shiptocountry ?>
<?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left" nowrap><?lsmb text('Order #') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Date') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Contact') ?></th><?lsmb IF warehouse ?>
<th width="17%" align="left" nowrap><?lsmb text('Warehouse') ?></th><?lsmb END ?>
<th width="17%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left"><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb ordnumber ?>&nbsp;</td><?lsmb IF shippingdate ?>
<td><?lsmb shippingdate ?></td><?lsmb ELSE ?>
<td><?lsmb orddate ?></td><?lsmb END ?>
<td><?lsmb employee ?>&nbsp;</td><?lsmb IF warehouse ?>
<td><?lsmb warehouse ?></td><?lsmb END ?>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="left"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Serialnumber') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th><span class="c2"><?lsmb text('Recd') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Bin') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td><?lsmb runningnumber.${loop_count} ?></td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td><?lsmb serialnumber.${loop_count} ?></td>
<td><?lsmb deliverydate.${loop_count} ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td align="right"><?lsmb ship.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td><?lsmb bin.${loop_count} ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td>
<hr noshade>
</td>
</tr>
</table>
</body>
</html>
+144
View File
@@ -0,0 +1,144 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: bin_list.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
% Breaking old pagebreak directives
%<?xlsmb pagebreak 65 27 37 ?>
%\end{tabularx}
%
%\newpage
%
%\markboth{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}
%
%\begin{tabularx}{\textwidth}{@{}rlXllrrll@{}}
% \textbf{Item} & \textbf{Number} & \textbf{Description} & \textbf{Serial Number} & & \textbf{Qty} & \textbf{Recd} & & \textbf{Bin} \\
%<?xlsmb end pagebreak ?>
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{<?lsmb text('From') ?>}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
}
\parbox[t]{.5\textwidth}{
\textbf{<?lsmb text('Ship To') ?>}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Bin List') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{Order \#} & \textbf{Date} & \textbf{Contact}
<?lsmb IF warehouse ?>
& \textbf{<?lsmb text('Warehouse') ?>}
<?lsmb END ?>
& \textbf{<?lsmb text('Shipping Point') ?>} & \textbf{<?lsmb text('Ship via') ?>} \\ [0.5em]
\hline
<?lsmb ordnumber ?>
<?lsmb IF shippingdate ?>
& <?lsmb shippingdate ?>
<?lsmb END ?>
<?lsmb IF NOT shippingdate ?>
& <?lsmb orddate ?>
<?lsmb END ?>
& <?lsmb employee ?>
<?lsmb IF warehouse ?>
& <?lsmb warehouse ?>
<?lsmb END ?>
& <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}rllllrrll@{}}
\textbf{<?lsmb text('Item') ?>} & \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>} &
\textbf{<?lsmb text('Serial Number') ?>} &
& \textbf{<?lsmb text('Qty') ?>} & \textbf{<?lsmb text('Recd') ?>} &
& \textbf{<?lsmb text('Bin') ?>} \\
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb serialnumber.${lc} ?> &
<?lsmb deliverydate.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb ship.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb bin.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\rule{\textwidth}{2pt}
\end{document}
<?lsmb END -?>
+44
View File
@@ -0,0 +1,44 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: check.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass{scrartcl}
\usepackage{iftex}
\ifpdftex
%% (pdf)latex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\else
\usepackage{fontspec}
\fi
\usepackage{tabularx}
\usepackage[<?lsmb SETTINGS.papersize ?>paper,top=2cm,bottom=1.5cm,left=1.1cm,right=1.5cm]{geometry}
\usepackage{graphicx}
<?lsmb REQUIRE check_base ?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{9pt}{9pt}\selectfont
\fi
<?lsmb PROCESS check_single ?>
\end{document}
<?lsmb END # FILTER latex { format="$FORMAT($PROCESSOR)" } -?>
+80
View File
@@ -0,0 +1,80 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: check_base.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb BLOCK check_single ?>
\parbox[t]{12cm}{
<?lsmb name ?>
<?lsmb address ?>}
\hfill
\parbox[t]{6cm}{\hfill <?lsmb source ?>}
\vspace*{0.6cm}
<?lsmb text_amount ?> \dotfill <?lsmb decimal ?>/100 \makebox[0.5cm]{\hfill}
\vspace{0.5cm}
\hfill <?lsmb datepaid ?> \makebox[2cm]{\hfill} <?lsmb
format_amount({amount = amount, format = '1,000.00', money = 1}) ?>
% different date format for datepaid
% <?lsmb DD ?><?lsmb MM ?><?lsmb YYYY ?>
\vspace{0.5cm}
<?lsmb name ?>
<?lsmb street1 ?>
<?lsmb street2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END # state ?>
<?lsmb mail_code ?>
<?lsmb country ?>
\vspace{1.8cm}
<?lsmb memo ?>
\vspace{0.8cm}
<?lsmb name ?>
\vspace{0.5cm}
<?lsmb name ?> \hfill <?lsmb datepaid ?> \hfill <?lsmb source ?>
\vspace{0.5cm}
\begin{tabularx}{\textwidth}{lXrr@{}}
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Invoice Date') ?>}
& \textbf{<?lsmb text('Amount Due') ?>} & \textbf{<?lsmb text('Applied') ?>} \\
<?lsmb FOR inv = invoices ?>
<?lsmb inv.invnumber ?> & <?lsmb inv.invoice_date ?> \dotfill
& <?lsmb inv.due ?> & <?lsmb inv.paid ?> \\
<?lsmb END # FOREACH inv ?>
\end{tabularx}
\vspace{1cm}
<?lsmb memo ?>
\vfill
<?lsmb message ?>
<?lsmb END # BLOCK ?>
+62
View File
@@ -0,0 +1,62 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: check_multiple.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass{scrartcl}
\usepackage{iftex}
\ifpdftex
%% (pdf)latex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\else
\usepackage{fontspec}
\fi
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage[<?lsmb SETTINGS.papersize ?>paper,top=2cm,bottom=1.5cm,left=1.1cm,right=1.5cm]{geometry}
<?lsmb PROCESS check_base ?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{9pt}{9pt}\selectfont
\fi
<?lsmb FOR check = checks ?>
<?lsmb name = check.name ?>
<?lsmb INCLUDE check_single
source = check.source
control_code = check.control_code
text_amount = check.text_amount
decimal = check.decimal
amount = check.amount
legal_name = check.legal_name
street1 = check.street1
street2 = check.street2
city = check.city
state = check.state
mail_code = check.mail_code
country = check.country
memo = check.memo
invoices = check.invoices
?>
\clearpage
<?lsmb END # FOR check ?>
\end{document}
<?lsmb END # FILTER latex { format="$FORMAT($PROCESSOR)" } -?>
+62
View File
@@ -0,0 +1,62 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2025-05-02
File: display_report.csv
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged 'dynatable.csv' into this template
1.2 Fix missing newlines after each row
-?>
<?lsmb-
BLOCK do_quote ;
IF VALUE.to_output.defined();
value = VALUE.to_output();
ELSE;
value = VALUE;
END;
IF value.match('[^0-9.+-]'); # any non-digit means run escaping
'"'; value.replace('"', '""'); '"'; # " balance the double quotes
ELSE;
value;
END;
END;
BLOCK dynatable;
SKIP_TYPES = ['hidden', 'radio', 'checkbox'];
FOREACH COL IN columns;
IF SKIP_TYPES.grep(COL.type).empty();
UNLESS loop.first();
',';
END;
INCLUDE do_quote VALUE = COL.name;
END;
END;
"\n";
FOREACH ROW IN tbody.rows;
FOREACH COL IN columns;
COL_ID = COL.col_id;
IF SKIP_TYPES.grep(COL.type).empty();
UNLESS loop.first();
',';
END;
INCLUDE do_quote VALUE = ROW.$COL_ID;
END;
END;
"\n";
END;
END;
PROCESS dynatable tbody = {rows = rows };
?>
Can't render this file because it contains an unexpected character in line 27 and column 7.
+167
View File
@@ -0,0 +1,167 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2024-08-21
File: display_report.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged 'dynatable.html' into this template
-?>
<?lsmb-
# Simplified block from UI/lib/dynatable.html; see that file for docs
BLOCK dynatable -?>
<table id="<?lsmb attributes.id ?>"
class="dynatable <?lsmb attributes.class ?>"
width="<?lsmb attributes.width ?>">
<?lsmb- IF !hide_header -?>
<thead>
<tr>
<?lsmb- FOREACH COL IN columns;
IF COL.type != 'hidden'; -?>
<th class="<?lsmb COL.col_id _ ' ' _ COL.class _ ' ' _ COL.type | html ?>"><?lsmb COL.name | html ?>
</th>
<?lsmb- END; END; -?>
</tr>
</thead>
<?lsmb- END -?>
<tbody>
<?lsmb-
PFX = attributes.input_prefix;
FOREACH ROW IN tbody.rows; -?>
<tr class="<?lsmb ROW.html_class _ ' ' _ ROW.row_id ?>">
<?lsmb- FOREACH COL IN columns;
ROWSPANNED = COL.col_id _ "_ROWSPANNED";
IF ROW.$ROWSPANNED;
NEXT;
END;
ROWSPAN = COL.col_id _ "_ROWSPAN";
IF ROW.$ROWSPAN;
ROWSPAN=" rowspan=\"" _ ROW.$ROWSPAN _ "\"";
ELSE;
ROWSPAN="";
END;
TYPE = COL.type;
NOHREF = COL.col_id _ "_NOHREF";
IF (ROW.NOINPUT AND TYPE != 'href' AND TYPE != 'hidden')
OR (ROW.$NOHREF AND TYPE == 'href');
TYPE = 'text';
END;
NEXT IF TYPE == 'hidden'; -?>
<td class="<?lsmb COL.col_id _ ' ' _ COL.class _ ' ' _ COL.type | html ?>"<?lsmb ROWSPAN ?>>
<?lsmb- IF TYPE == 'boolean_checkmark' OR TYPE == 'checkbox' OR TYPE == 'radio';
IF ROW.${COL.col_id};
'✓';
END;
ELSIF TYPE == 'select';
# ROW is passed as an argument if COL.options is a callback
# function, which allows dropdown options to be dynamically
# customised to each row. The ROW argument is harmlessly
# ignored by Template Toolkit if COL.options is a static
# arrayref common to every row.
OPTION_LIST = COL.options(ROW);
FOREACH option IN OPTION_LIST;
IF (option.value | html) == ROW.${COL.col_id};
option.text | html;
END;
END;
ELSE -?>
<?lsmb ROW.${COL.col_id} ?>
<?lsmb- END -?>
</td>
<?lsmb- END; END -?>
</tr>
<?lsmb- END ?>
</tbody>
<?lsmb- IF tfoot -?>
<tfoot>
<?lsmb- FOREACH ROW IN tfoot.rows;
SPACECOUNT = 0 -?>
<tr>
<?lsmb- FOREACH COL IN columns;
COL_ID = COL.col_id;
IF tfoot.coltypes.$COL_ID;
TYPE = tfoot.coltypes.$COL_ID;
ELSE;
TYPE = COL.type;
END;
DOJO = tfoot.dojo_type.$COL_ID;
DOJO_PROPS = tfoot.dojo_props.$COL_ID;
IF tfoot.coltypes.${COL.col_id} == 'spacer';
SPACECOUNT = SPACECOUNT + 1;
ELSE;
IF SPACECOUNT > 0 ?>
<td colspan="<?lsmb SPACECOUNT ?>">&nbsp;</td>
<?lsmb END;
NEXT IF TYPE == 'hidden';
-?>
<td class="<?lsmb COL.col_id | html ?>">
<?lsmb- IF TYPE == 'boolean_checkmark' OR TYPE == 'checkbox' OR TYPE == 'radio';
IF ROW.${COL.col_id};
'✓';
END;
ELSE -?>
<?lsmb ROW.${COL.col_id} ?>
<?lsmb- END -?>
</td>
<?lsmb- END -?>
</tr>
<?lsmb- END -?>
</tfoot>
<?lsmb- END -?>
</table>
<?lsmb- END; -?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
table tbody tr:nth-child(2n) {
background-color: #e6e6fa;
}
table tbody tr:nth-child(2n+1) {
background-color: #ffeeec;
}
table td, table th {
padding: 0.2em 1ex;
}
table thead {
background-color: #bcd8f4;
}
label {
font-weight: bold;
}
div.heading-section {
margin-bottom: 2em;
}
</style>
</head>
<body>
<div class="heading-section">
<div class="report-header">
<label><?lsmb text('Report Name') ?>:</label>
<span class="report-header"><?lsmb name ?></span>
</div>
<div class="report-header">
<label><?lsmb text('Company') ?>:</label>
<span class="report-header"><?lsmb SETTINGS.company_name ?></span>
</div><?lsmb FOREACH LINE IN hlines ?>
<div class="report-header">
<label><?lsmb LINE.text ?>:</label>
<span class="report-header"><?lsmb LINE.value ?></span>
</div><?lsmb END ?>
</div><?lsmb PROCESS dynatable tbody = {rows = rows }
attributes = {class = 'report', order_url = order_url } ?>
</body>
</html>
+91
View File
@@ -0,0 +1,91 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2024-08-21
File: display_report.odst
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged 'dynatable.odst' into this template
-?>
<?lsmb-
BLOCK dynatable;
ROWCOUNT = 1;
IF tbody.rows.size;
ROWCOUNT = ROWCOUNT + tbody.rows.size;
END;
IF tfoot.rows.size;
ROWCOUNT = ROWCOUNT + tbody.rows.size;
END;
-?>
<worksheet name="<?lsmb attributes.id | html ?>" rows="<?lsmb ROWCOUNT ?>" columns="<?lsmb columns.size + 1 ?>">
<format bottom="5" bg_color="lime" bottom_color="magenta">
<?lsmb IF !hide_header -?>
<row>
<?lsmb FOREACH COL IN columns;
IF COL.type != 'hidden'; -?>
<cell text="<?lsmb COL.name | html ?>" />
<?lsmb END; END; ?>
</row>
<?lsmb END -?>
</format>
<format align="right">
<?lsmb FOREACH ROW IN tbody.rows -?>
<row>
<?lsmb FOREACH COL IN columns -?>
<?lsmb IF COL.type != 'hidden'; -?>
<cell text="<?lsmb ROW.${COL.col_id} | html ?>" />
<?lsmb END;
END -?>
</row>
<?lsmb END -?>
<?lsmb- IF tfoot -?>
<?lsmb- FOREACH ROW IN tfoot.rows; ?>
<row>
<?lsmb FOREACH COL IN columns ?>
<?lsmb IF COL.type != 'hidden'; -?>
<cell text="<?lsmb ROW.${COL.col_id} | html ?>" />
<?lsmb END; END ?>
</row>
<?lsmb END;
END ?>
</format>
</worksheet>
<?lsmb
END; # BLOCK dynatable
# MAIN template
HEADS = 2;
IF hlines.size;
HEADS = HEADS + hlines.size;
END;
-?>
<workbook>
<worksheet name="<?lsmb text('Title Page') | html ?>" rows="<?lsmb HEADS ?>"
columns="2">
<row><cell text="<?lsmb text('Report Name') | html ?>:" />
<cell text="<?lsmb name | html ?>" />
</row>
<row><cell text="<?lsmb text('Company') | html ?>:" />
<cell text="<?lsmb SETTINGS.company_name | html ?>" />
</row>
<?lsmb FOREACH HLINE IN hlines -?>
<row><cell text="<?lsmb HLINE.text | html ?>:" />
<cell text="<?lsmb HLINE.value | html ?>" />
</row>
<?lsmb END -?>
</worksheet>
<?lsmb PROCESS dynatable
attributes = {id = name }
tbody = {rows = rows } ?>
</workbook>
+135
View File
@@ -0,0 +1,135 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.3
Date: 2024-08-21
File: display_report.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.3 Merged 'dynatable.html' into this template
1.2 Simplified report header generation factored out of dynatable
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb-
BLOCK dynatable;
TOTAL_WIDTH=14; # cm. using A4 as a basis because it is slightly narrower than
# US Letter. This way the dynatable works for both paper sizes.
# This assumes a 1cm margin on either side. --CT
DECLARED_WIDTH=0;
SKIP_TYPES = ['hidden', 'radio', 'checkbox'];
FOREACH COL IN columns;
DECLARED_WIDTH = DECLARED_WIDTH + COL.pwidth; # pwidth is arbitrary scale
END;
IF DECLARED_WIDTH > 0;
WIDTH_PER_P = TOTAL_WIDTH / DECLARED_WIDTH;
ELSE;
WIDTH_PER_P = 1;
END;
?>
\begin{longtable}{<?lsmb-
FOREACH COL IN columns;
IF COL.psep_before;
'|';
END;
IF 1 == SKIP_TYPES.grep(COL.type).size() or COL.html_only;
'';
ELSIF COL.pwidth;
"p{" _ (COL.pwidth * WIDTH_PER_P) _ "cm}";
ELSIF COL.palign;
COL.palign;
ELSE;
'l';
END;
IF COL.psep_after;
'|';
END;
END;
-?>}
<?lsmb
FOREACH COL IN columns;
IF 0 == SKIP_TYPES.grep(COL.type).size() AND ! COL.html_only;
UNLESS loop.first();
' & ';
END;
escape(COL.name);
END;
END;
-?>\tabularnewline
\hline\hline
\endfirsthead
<?lsmb
FOREACH COL IN columns;
IF 0 == SKIP_TYPES.grep(COL.type).size() AND ! COL.html_only;
UNLESS loop.first() ;
' & ';
END;
escape(COL.name);
END;
END;
-?>\tabularnewline
\hline\hline
\endhead
<?lsmb
FOREACH ROW IN tbody.rows;
FOREACH COL IN columns;
IF 0 == SKIP_TYPES.grep(COL.type).size() AND ! COL.html_only;
UNLESS loop.first();
' & ';
END;
?>\begin{tabular}[t]{@{}l@{}}<?lsmb
ROW.${COL.col_id};
?>\end{tabular}<?lsmb
END;
END;
?>\tabularnewline
<?lsmb
END; # FOREACH ?>
\end{longtable}
<?lsmb END; # block dynatable
# MAIN template
SKIP_TYPES = ['hidden', 'radio', 'checkbox'];
COLNUMBER = 0;
FOREACH COL IN columns;
IF 0 == SKIP_TYPES.grep(COL.type).size() and ! COL.html_only.defined();
COLNUMBER = COLNUMBER + 1;
END;
END;
FILTER latex { format="$FORMAT($PROCESSOR)" };
-?>
\documentclass[<?lsmb SETTINGS.papersize ?>paper]{article}
\usepackage{longtable}
\usepackage[margin=1cm]{geometry}
\begin{document}
\begin{center}
\begin{tabular}{rl}
\textbf{<?lsmb text('Report Name') ?>}: & <?lsmb name ?> \\
\textbf{<?lsmb text('Company') ?>}: & <?lsmb SETTINGS.company_name ?> \\
<?lsmb- newlines = new_heads(hlines);
FOREACH LINE IN newlines -?>
\textbf{<?lsmb LINE.text ?>}: & <?lsmb LINE.value ?> \\
<?lsmb- END -?>
\end{tabular}
\end{center}
<?lsmb PROCESS dynatable
tbody = { rows = rows };
?>
\end{document}
<?lsmb END -?>
+91
View File
@@ -0,0 +1,91 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2024-08-21
File: display_report.xlst
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged 'dynatable.xlst' into this template
-?>
<?lsmb-
BLOCK dynatable;
ROWCOUNT = 1;
IF tbody.rows.size;
ROWCOUNT = ROWCOUNT + tbody.rows.size;
END; #IF
IF tfoot.rows.size;
ROWCOUNT = ROWCOUNT + tbody.rows.size;
END; # IF
-?>
<worksheet name="<?lsmb attributes.id | html ?>" rows="<?lsmb ROWCOUNT ?>" columns="<?lsmb columns.size + 1 ?>">
<format bottom="5" bg_color="lime" bottom_color="magenta">
<?lsmb IF !hide_header -?>
<row>
<?lsmb FOREACH COL IN columns;
IF COL.type != 'hidden'; -?>
<cell text="<?lsmb COL.name | html ?>" />
<?lsmb END; # IF
END; # FOREACH ?>
</row>
<?lsmb END; # IF -?>
</format>
<format align="right">
<?lsmb FOREACH ROW IN tbody.rows -?>
<row>
<?lsmb FOREACH COL IN columns -?>
<?lsmb IF COL.type != 'hidden'; -?>
<cell text="<?lsmb ROW.${COL.col_id} | html ?>" />
<?lsmb END; # IF
END; #FOREACH -?>
</row>
<?lsmb END; #FOREACH -?>
<?lsmb- IF tfoot -?>
<?lsmb- FOREACH ROW IN tfoot.rows; ?>
<row>
<?lsmb FOREACH COL IN columns ?>
<?lsmb IF COL.type != 'hidden'; -?>
<cell text="<?lsmb ROW.${COL.col_id} | html ?>" />
<?lsmb END; # IF
END; # FOREACH ?>
</row>
<?lsmb END; # FOREACH
END; #IF ?>
</format>
</worksheet>
<?lsmb
END; # BLOCK dynatable
# MAIN template
HEADS = 2;
IF hlines.size;
HEADS = HEADS + hlines.size;
END;
?>
<workbook>
<worksheet name="<?lsmb text('Title Page') | html ?>" rows="<?lsmb HEADS ?>"
columns="2">
<row><cell text="<?lsmb text('Report Name') | html ?>:" />
<cell text="<?lsmb name | html ?>" />
</row>
<row><cell text="<?lsmb text('Company') | html ?>:" />
<cell text="<?lsmb SETTINGS.company_name | html ?>" />
</row>
<?lsmb FOREACH HLINE IN hlines -?>
<row><cell text="<?lsmb HLINE.text | html ?>:" />
<cell text="<?lsmb HLINE.value | html ?>" />
</row>
<?lsmb END -?>
</worksheet>
<?lsmb PROCESS dynatable
attributes = {id = name }
tbody = {rows = rows } ?>
</workbook>
+37
View File
@@ -0,0 +1,37 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: envelope.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass{scrartcl}
\usepackage{iftex}
\ifpdftex
%% (pdf)latex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\else
\usepackage{fontspec}
\fi
\usepackage{tabularx}
\usepackage[paperheight=11cm, paperwidth=23cm,top=3.5cm,bottom=3cm,left=12cm,right=1cm]{geometry}
\begin{document}
\thispagestyle{empty}
\noindent <?lsmb name ?>\\
<?lsmb address1 ?> \\
<?lsmb- IF address2 ?>
<?lsmb address2 ?> \\
<?lsmb- END ?>
<?lsmb city ?>
<?lsmb- IF state -?>, <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>\\
\end{document}
<?lsmb END -?>
+24
View File
@@ -0,0 +1,24 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: invoice.894.edi
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
ISA*00* *00* *12*XXXXXXXXXX *01*XXXXXXXXXX *<?lsmb EDI_CURRENT_DATE ?>*<?lsmb EDI_CURRENT_TIME ?>*^*00501*<?lsmb FILTER format('%09d'); id ; END ?>*0*P*>~
GS*DX*7196333434*031958655*<?lsmb EDI_CURRENT_DATE ?>*<?lsmb EDI_CURRENT_TIME ?>*0001*X*005010~
ST*894*<?lsmb id ?>~
G82*<?lsmb IF reverse; 'C'; ELSE; 'X'; END ?>*<?lsmb invnumber ?>*0001*0000*<?lsmb edidate(transdate) ?>~
<?lsmb t_qty = 0; FOREACH n IN number; lc = loop.index; t_qty = t_qty + qty.${lc} -?>
LS*<?lsmb loop.count ?>~
G83*<?lsmb loop.count?>*<?lsmb qty.${lc} ?>*UC*<?lsmb number.${lc} ?>*<?lsmb FILTER format('%.4f'); sellprice.${lc}; END ?>**~
LE*<?lsmb loop.count ?>~
<?lsmb END # FOREACH n in number -?>
G84*<?lsmb t_qty?>*<?lsmb invtotal ?>~
SE*<?lsmb (3 * lc) + 7 ?>*<?lsmb id ?>~
GE*1*0001~
IEA*1*<?lsmb FILTER format('%09d'); id ; END ?>~
+240
View File
@@ -0,0 +1,240 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.2
Date: 2025-10-29
File: invoice.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Extended with 'shiptoattn' (at the attention of)
1.2 Add missing space before 'on' in tax specification row
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Invoice') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
span.c5 {font-size: 64%}
span.c4 {font-size: 51%}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1">
<?lsmb IF reverse; text('Credit Invoice'); ELSE; text('Invoice'); END; ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb contact ?><br>
<?lsmb END ?> <?lsmb IF customerphone ?><br>
<?lsmb text('Tel: [_1]', customerphone) ?> <?lsmb END ?> <?lsmb IF customerfax ?><br>
<?lsmb text('Fax: [_1]', customerfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb IF shiptoattn ?><?lsmb shiptoattn ?><br><?lsmb END ?>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb shiptocontact ?><br>
<?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?> <?lsmb IF shiptoemail ?><br>
<?lsmb shiptoemail ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="14%" align="left" nowrap><?lsmb text('Invoice #') ?></th>
<th width="14%" align="left" nowrap><?lsmb text('Date') ?></th>
<th width="14%" align="left" nowrap><?lsmb text('Due') ?></th>
<th width="14%" align="left"><?lsmb text('Order #') ?></th>
<th width="14%" align="left" nowrap><?lsmb text('Salesperson') ?></th>
<th width="14%" align="left" nowrap><?lsmb text('Shipping Point') ?></th>
<th width="14%" align="left" nowrap><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb invnumber ?></td>
<td><?lsmb invdate ?></td>
<td><?lsmb duedate ?></td>
<td><?lsmb ordnumber ?>&nbsp;</td>
<td><?lsmb employee ?>&nbsp;</td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th>&nbsp;</th>
<th align="right"><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th align="right"><span class="c2"><?lsmb text('Unit Price') ?></span></th>
<th align="right"><span class="c2"><?lsmb text('Disc %') ?></span></th>
<th align="right"><span class="c2"><?lsmb text('Extended') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td><?lsmb deliverydate.${loop_count} ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb sellprice.${loop_count} ?></td>
<td align="right"><?lsmb discountrate.${loop_count} ?></td>
<td align="right"><?lsmb linetotal.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="9">
<hr noshade>
</td>
</tr><?lsmb IF tax -?>
<tr>
<th colspan="7" align="right"><?lsmb text('Subtotal') ?></th>
<td colspan="2" align="right"><?lsmb subtotal ?></td>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="7" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?> on
<?lsmb taxbase.${loop_count} ?> @ <?lsmb taxrate.${loop_count} ?> %</th>
<td colspan="2" align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?><?lsmb END -?>
<tr>
<th colspan="7" align="right"><?lsmb text('Total') ?></th>
<td colspan="2" align="right"><?lsmb invtotal ?></td>
</tr><?lsmb IF paymentdate.0 ?>
<tr>
<th colspan="7" align="right"><?lsmb text('Paid') ?></th>
<td colspan="2" align="right">- <?lsmb paid ?></td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<td colspan="4">
<hr noshade>
</td>
</tr>
<tr>
<td colspan="5">&nbsp;</td>
<th colspan="2" align="right" nowrap><?lsmb text('Balance') ?></th>
<th colspan="2" align="right"><?lsmb total ?></th>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<?lsmb IF notes ?>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td><?lsmb END ?>
<td><?lsmb text_amount ?>***** <?lsmb decimal ?>/100</td>
<td align="right" nowrap><?lsmb text('All prices in [_1]', currency) ?></td>
</tr>
</table>
</td>
</tr><?lsmb IF paymentdate.0 ?>
<tr>
<td colspan="9">
<table width="60%">
<tr>
<th align="left"><?lsmb text('Payments') ?></th>
</tr>
<tr>
<td colspan="4">
<hr noshade>
</td>
</tr>
<tr>
<th align="left"><?lsmb text('Date') ?></th>
<th align="left"><?lsmb text('Account') ?></th>
<th align="left"><?lsmb text('Source') ?></th>
<th align="left"><?lsmb text('Amount') ?></th>
</tr><?lsmb FOREACH payment ?><?lsmb loop_count = loop.index ?>
<tr>
<td><?lsmb paymentdate.${loop_count} ?></td>
<td><?lsmb paymentaccount.${loop_count} ?></td>
<td><?lsmb paymentsource.${loop_count} ?></td>
<td><?lsmb payment.${loop_count} ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td></td>
</tr>
<tr>
<th><?lsmb text('Thank you for your valued business!') ?></th>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="60%"><span class="c4"><?lsmb text('Payment due by [_1].', duedate) ?>
<?lsmb text('Items returned are subject to a 10% restocking charge. A return authorization must be obtained from [_1] before goods are returned. Returns must be shipped prepaid and properly insured. [_1] will not be responsible for damages during transit.', company) ?></span></td>
<td width="40%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="9" align="left"><span class=
"c5"><?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>
<?lsmb text('Registration [_1]', taxnumber.${loop_count}) ?></span></th>
</tr><?lsmb END ?><?lsmb IF taxincluded ?>
<tr>
<td></td>
</tr>
<tr>
<th colspan="8" align="left"><span class=
"c5"><?lsmb text('Taxes shown are included in price.') ?></span></th>
</tr><?lsmb END ?>
</table>
</body>
</html>
+257
View File
@@ -0,0 +1,257 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.3
Date: 2024-08-14
File: invoice.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Fix spelling mistake (acrue -> accrue)
1.2 Merged xelatex targetting templates with those targetting pdflatex
1.3 Extended with 'shiptoattn' (at the attention of)
The "$FORMAT($PROCESSOR)" below evaluates to e.g. "pdf(pdflatex)".
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb BLOCK multiline -?>
\begin{minipage}{2in}
\medskip
\raggedright
<?lsmb string ?>
\end{minipage}
<?lsmb- END -?>
\newsavebox{\ftr}
\sbox{\ftr}{
\parbox{\textwidth}{
\tiny
\rule[1.5em]{\textwidth}{0.5pt}
<?lsmb text('Payment due NET [_1] Days from date of Invoice.', terms) ?>
<?lsmb text('Interest on overdue amounts will accrue at the rate of 12% per annum starting from [_1] until paid in full. Items returned are subject to a 10% restocking charge.', duedate) ?>
<?lsmb text('A return authorization must be obtained from [_1] before goods are returned. Returns must be shipped prepaid and properly insured. [_1] will not be responsible for damages during transit.', company) ?>
}
}
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb invnumber ?>}{<?lsmb company ?>\hfill <?lsmb invnumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{To}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state -?>
\hspace{-0.1cm}, <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF customerphone ?>
Tel: <?lsmb customerphone ?>
<?lsmb END ?>
<?lsmb IF customerfax ?>
Fax: <?lsmb customerfax ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{<?lsmb text('Ship To') ?>}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb IF shiptoattn -?>
<?lsmb shiptoattn ?>
<?lsmb END -?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate -?>
\hspace{-0.1cm}, <?lsmb shiptostate ?><?lsmb END ?> <?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb shiptocontact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
Tel: <?lsmb shiptophone ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
Fax: <?lsmb shiptofax ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb
IF reverse;
text('Credit Invoice');
ELSE;
text('Invoice');
END; ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{7}{|X}|} \hline
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Date') ?>}
& \textbf{<?lsmb text('Due') ?>} & \textbf{<?lsmb text('Order #') ?>}
& \textbf{<?lsmb text('Salesperson') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5em]
\hline
<?lsmb invnumber ?> & <?lsmb invdate ?> & <?lsmb duedate ?> & <?lsmb ordnumber ?> & <?lsmb employee ?>
& <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}r|llcrlrr|r}
\textbf{<?lsmb text('Item') ?>}
& \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Delivery') ?>}
& \textbf{<?lsmb text('Qty') ?>}
& \textbf{<?lsmb text('Unit') ?>}
& \textbf{<?lsmb text('Price') ?>}
& \textbf{<?lsmb text('Disc %') ?>}
& \textbf{<?lsmb text('Amount') ?>} \\
\hline
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb INCLUDE multiline string = item_description.${lc} ?> &
<?lsmb deliverydate.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb sellprice.${lc} ?> &
<?lsmb discountrate.${lc} ?> &
<?lsmb linetotal.${lc} ?> \\
<?lsmb END ?>
<?lsmb IF tax ?>
\hline \hline
\multicolumn{8}{r|}{<?lsmb text('Subtotal') ?>} & <?lsmb subtotal ?> \\*
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
\multicolumn{8}{r|}{<?lsmb taxdescription.${lc}
?> on <?lsmb taxbase.${lc} ?> }
& <?lsmb tax.${lc} ?> \\*
<?lsmb END ?>
<?lsmb END ?>
\hline \hline
\multicolumn{8}{r|}{<?lsmb text('Total') ?>} & <?lsmb invtotal ?> \\*
<?lsmb IF paymentdate.0 ?>
\multicolumn{8}{r|}{ <?lsmb text('Paid') ?> } & - <?lsmb paid ?> \\*
\hline
\hline
\multicolumn{8}{r|}{<?lsmb text('Balance') ?>} & <?lsmb total ?>\\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\vspace{0.2cm}
\hfill
\vspace{0.3cm}
<?lsmb text_amount ?> ***** <?lsmb decimal ?>/100
\hfill
<?lsmb text('All prices in [_1].', currency) ?>
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\vfill
<?lsmb IF paymentdate.0 ?>
\begin{tabularx}{10cm}{@{}lXlr@{}}
\textbf{<?lsmb text('Payments') ?>} & & & \\
\hline
\textbf{<?lsmb text('Date') ?>} & & \textbf{<?lsmb text('Source') ?>}
& \textbf{<?lsmb text('Amount') ?>} \\
<?lsmb FOREACH payment ?>
<?lsmb lc = loop.index ?>
<?lsmb paymentdate.${lc} ?> & <?lsmb paymentaccount.${lc} ?> & <?lsmb paymentsource.${lc} ?> & <?lsmb payment.${lc} ?> \\
<?lsmb END ?>
\end{tabularx}
<?lsmb END ?>
<?lsmb FOR FILE IN file_list ?>
\includegraphics[scale=0.3]{<?lsmb file_path _ '/' _ FILE.file_name ?>}
<?lsmb END ?>
\vspace{1cm}
\centerline{\textbf{<?lsmb text('Thank You for your valued business!') ?>}}
\rule{\textwidth}{0.5pt}
\usebox{\ftr}
\end{document}
<?lsmb END -?>
+59
View File
@@ -0,0 +1,59 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: letterhead.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<tr>
<td>
<table width="100%">
<tr>
<td>
<h4><?lsmb company ?><br>
<?lsmb address ?></h4>
</td><?lsmb# using "comment block" template tag to suppress output
There are two options of including a picture in the output:
1. An external image available from your webserver
This option has the downside that the webserver and image
need to remain available for extended periods.
<img src="https://example.com/logo.png" border="0" height="58">
2. An image embedded in the invoice itself
This option has the downside that the invoice file will
be larger and the HTML source will be less readable, however,
it eliminates external dependencies, retaining the integrity
of the invoice, independent of what happens to publicly hosted
images
<img src="data:image/png;base64,<-?lsmb dbfile_base64('logo.png') ?->"
border="0" height="58">
Please note that this is dependent on having a file uploaded by
the name 'logo.png' under "System - Files". Also, when using this
option, please remove the hyphens from '<-?lsmb' and '?->'; they
are used to hide the text from the template processor.
?>
<th><!--Replace this comment with one of the two image tags above --></th>
<td align="right">
<h4><?lsmb text('Tel: [_1]', tel) ?><br>
<?lsmb text('Fax: [_1]', fax) ?></h4>
</td>
</tr>
<tr>
<td colspan="3">
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
+54
View File
@@ -0,0 +1,54 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: letterhead.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
\parbox{\textwidth}{%
\parbox[b]{.42\textwidth}{%
<?lsmb company ?>
<?lsmb address ?>
}
\parbox[b]{.2\textwidth}{
<?lsmb# using "comment block" template tag to suppress output
To include a logo in your LaTeX document, it needs to be retrieved from
the database and temporarily stored in a location accessible to the PDF
generator. The function 'dbfile_path' handles that.
To use this functionality, (a) remove the percent sign before the
\includegraphics command and (b) make sure all templates which INCLUDE
'letterhead', contain '\usepackage{graphics}'
If the generated output is to be PDF output, make sure that the image is
a PNG image as shown below. In case Postscript (PS) or EPS output, make
sure the image is (E)PS.
For information on the avaliable options for the 'includegraphics'
command, see https://en.wikibooks.org/wiki/LaTeX/Importing_Graphics
Example (remove the 3 %-signs):
?>
% \includegraphics[scale=0.3]{<%?lsmb dbfile_path('logo.png') ?%>}
}\hfill
\begin{tabular}[b]{rr@{}}
<?lsmb text('Tel:') ?> & <?lsmb tel ?>\\
<?lsmb text('Fax:') ?> & <?lsmb fax ?>
\end{tabular}
\rule[1.5em]{\textwidth}{0.5pt}
}
+146
View File
@@ -0,0 +1,146 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: packing_list.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Packing List') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
span.c4 {font-size: 51%}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Packing List') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th width="50%" align="left"><span class="c2"><?lsmb text('Ship To:') ?></span></th>
<th width="50%">&nbsp;</th>
</tr>
<tr valign="top">
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?></td>
<td><?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?> <?lsmb shiptoemail ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left"><?lsmb text('Invoice #') ?></th>
<th width="17%" align="left"><?lsmb text('Order #') ?></th>
<th width="17%" align="left"><?lsmb text('Date') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Contact') ?></th><?lsmb IF warehouse ?>
<th width="17%" align="left"><?lsmb text('Warehouse') ?></th><?lsmb END ?>
<th width="17%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left"><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb invnumber ?>&nbsp;</td>
<td><?lsmb ordnumber ?>&nbsp;</td><?lsmb IF shippingdate ?>
<td><?lsmb shippingdate ?></td><?lsmb ELSE ?>
<td><?lsmb transdate ?></td><?lsmb END ?>
<td><?lsmb employee ?>&nbsp;</td><?lsmb IF warehouse ?>
<td><?lsmb warehouse ?>&nbsp;</td><?lsmb END ?>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="left"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Serial #') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th><span class="c2"><?lsmb text('Ship') ?></span></th>
<th>&nbsp;</th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td><?lsmb runningnumber.${loop_count} ?></td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td><?lsmb serialnumber.${loop_count} ?></td>
<td><?lsmb deliverydate.${loop_count} ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td align="right"><?lsmb ship.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td>
<hr noshade>
</td>
</tr><?lsmb IF notes ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td>Notes</td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="70%"><span class=
"c4"><?lsmb text('Items returned are subject to a 10% restocking charge. A return authorization must be obtained from [_1] before goods are returned. Returns must be shipped prepaid and properly insured. [_1] will not be responsible for damages during transit.', company) ?></span></td>
<td width="30%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+166
View File
@@ -0,0 +1,166 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: packing_list.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
\newsavebox{\ftr}
\sbox{\ftr}{
\parbox{\textwidth}{
\tiny
\rule[1.5em]{\textwidth}{0.5pt}
<?lsmb text('Items returned are subject to a 10% restocking charge.') ?>
<?lsmb text('A return authorization must be obtained from [_1] before goods are returned. Returns must be shipped prepaid and properly insured. [_1] will not be responsible for damages during transit.', company) ?>
}
}
<?lsmb INCLUDE letterhead ?>
% Breaking old pagebreak directive
%<?xlsmb pagebreak 65 27 37 ?>
%\end{tabularx}
%
%\newpage
%
%\markboth{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}
%
%\begin{tabularx}{\textwidth}{@{}rlXllrrl@{}}
% \textbf{Item} & \textbf{Number} & \textbf{Description} & \textbf{Serial Number} & & \textbf{Qty} & \textbf{Ship} & \\
%<?xlsmb end pagebreak ?>
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}} \hfill
\vspace{0.3cm}
\parbox[t]{.5\textwidth}{
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
}
\parbox[t]{.5\textwidth}{
<?lsmb shiptocontact ?>
<?lsmb IF shiptophone ?>
Tel: <?lsmb shiptophone ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
Fax: <?lsmb shiptofax ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Packing List') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{7}{|X}|} \hline
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Order #') ?>}
& \textbf{<?lsmb text('Date') ?>} & \textbf{<?lsmb text('Contact') ?>}
<?lsmb IF warehouse ?>
& \textbf{<?lsmb text('Warehouse') ?>}
<?lsmb END ?>
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5em]
\hline
<?lsmb invnumber ?> & <?lsmb ordnumber ?>
<?lsmb IF shippingdate ?>
& <?lsmb shippingdate ?>
<?lsmb ELSE ?>
& <?lsmb transdate ?>
<?lsmb END ?>
& <?lsmb employee ?>
<?lsmb IF warehouse ?>
& <?lsmb warehouse ?>
<?lsmb END ?>
& <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}rllllrrl@{}}
\textbf{<?lsmb text('Item') ?>} & \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Serial Number') ?>} &
& \textbf{<?lsmb text('Qty') ?>} & \textbf{<?lsmb text('Ship') ?>} & \\
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb serialnumber.${lc} ?> &
<?lsmb deliverydate.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb ship.${lc} ?> &
<?lsmb unit.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\vfill
\rule{\textwidth}{0.5pt}
\usebox{\ftr}
\end{document}
<?lsmb END -?>
+117
View File
@@ -0,0 +1,117 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: pick_list.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Pick List') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Pick List') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th width="50%" align="left"><span class="c2"><?lsmb text('Ship To:')
?></span></th>
<th width="50%">&nbsp;</th>
</tr>
<tr valign="top">
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?></td>
<td><?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?> <?lsmb shiptoemail ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="15%" align="left"><?lsmb text('Invoice #') ?></th>
<th width="15%" align="left"><?lsmb text('Order #') ?></th>
<th width="10%" align="left"><?lsmb text('Date') ?></th>
<th width="15%" align="left" nowrap><?lsmb text('Contact') ?></th>
<th width="15%" align="left"><?lsmb text('Warehouse') ?></th>
<th width="10%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="10%" align="left"><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb invnumber ?>&nbsp;</td>
<td><?lsmb ordnumber ?>&nbsp;</td><?lsmb IF shippingdate ?>
<td><?lsmb shippingdate ?></td><?lsmb ELSE ?>
<td><?lsmb transdate ?></td><?lsmb END ?>
<td><?lsmb employee ?>&nbsp;</td>
<td><?lsmb warehouse ?>&nbsp;</td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="left"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th><span class="c2"><?lsmb text('Ship') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Bin') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td><?lsmb runningnumber.${loop_count} ?></td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td align="right">[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]</td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb bin.${loop_count} ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr>
<tr>
<td>
<hr noshade>
</td>
</tr>
</table>
</body>
</html>
+134
View File
@@ -0,0 +1,134 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: pick_list.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
% Breaking old pagebreak directive
%<?xlsmb pagebreak 65 27 37 ?>
%\end{tabularx}
%
%\newpage
%
%\markboth{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}
%
%\begin{tabularx}{\textwidth}{@{}rlXrcll@{}}
% \textbf{Item} & \textbf{Number} & \textbf{Description} &
% \textbf{Qty} & \textbf{Ship} & & \textbf{Bin} \\
%
%<?xlsmb end pagebreak ?>
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
} \hfill
\vspace{0.3cm}
\parbox[t]{.5\textwidth}{
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
}
\parbox[t]{.5\textwidth}{
<?lsmb shiptocontact ?>
<?lsmb IF shiptophone ?>
Tel: <?lsmb shiptophone ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
Fax: <?lsmb shiptofax ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Pick List') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{7}{|X}|} \hline
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Order #') ?>}
& \textbf{<?lsmb text('Date') ?>} & \textbf{<?lsmb text('Contact') ?>}
& \textbf{<?lsmb text('Warehouse') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5em]
\hline
<?lsmb invnumber ?> & <?lsmb ordnumber ?>
<?lsmb IF shippingdate ?>
& <?lsmb shippingdate ?>
<?lsmb ELSE ?>
& <?lsmb transdate ?>
<?lsmb END ?>
& <?lsmb employee ?> & <?lsmb warehouse ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}rllrcll@{}}
\textbf{<?lsmb text('Item') ?>} & \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>} &
\textbf{<?lsmb text('Qty') ?>} & \textbf{<?lsmb text('Ship') ?>} &
& \textbf{<?lsmb text('Bin') ?>} \\
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> & [\hspace{1cm}] &
<?lsmb unit.${lc} ?> & <?lsmb bin.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
}
\end{document}
<?lsmb END -?>
+104
View File
@@ -0,0 +1,104 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: printPayment.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title></title>
<style type="text/css">
td.c7 {text-align:left}
span.c6 {text-transform:uppercase}
th.c5 {text-align:right}
td.c4 {text-align:center}
span.c3 {color: black}
h1.c2 {text-transform:uppercase}
th.c1 {text-align:left}
</style>
</head>
<body>
<?lsmb column_count = 0 -?>
<table width="100%" id="header_table">
<tr id="header_bar">
<th id="top_bar_header" colspan="2" width="30%" class="c1">
<h5>LOGO AREA<br>
<?lsmb text('Address: [_1]', company.address) ?><br>
<?lsmb text('Tel: [_1]', company.telephone) ?></h5>
</th>
<th class="c1">
<h1 class="c2"><?lsmb text('Payment Order Number [_1]', header.payment_reference) ?></h1>
</th>
</tr>
</table>
<table class="datarow" width="100%" cellspacing="0" cellpadding="0" border="1">
<tr>
<th class="titledatarow" align="center" width="7%"><span class=
"c3"><?lsmb text('Invoice') ?>&nbsp;<?lsmb text('Number')?></span></th>
<th class="titledatarow" align="center" width="11%"><span class=
"c3"><?lsmb text('Account') ?></span></th>
<th class="titledatarow" align="center" width="68%"><span class=
"c3"><?lsmb text('Description') ?></span></th>
<th class="titledatarow" align="center" width="14%"><span class=
"c3"><?lsmb text('Source') ?></span></th>
<th class="titledatarow" align="center" width="14%"><span class=
"c3"><?lsmb text('Amount') ?></span></th>
</tr><?lsmb FOREACH row IN rows -?>
<tr valign="top">
<td class="c4"><?lsmb row.invoice_number ?></td>
<td class="c4"><?lsmb row.chart_description?>--<?lsmb row.chart_accno?></td>
<td class="c4"><?lsmb row.memo -?></td>
<td class="c4"><?lsmb row.source ?></td>
<td class="c4"><?lsmb row.amount ?></td>
</tr><?lsmb END -?>
<tr valign="top">
<th class="c5" colspan="4">&nbsp; <?lsmb text('TOTAL') ?></th>
<td class="c4"><?lsmb header.amount ?></td>
</tr>
</table>
<table width="100%">
<tr>
<th class="titledatarow c1"><span class="c3"><?lsmb text('Currency') ?>:
<?lsmb header.currency ?></span></th>
<th class="titledatarow c1"><span class="c3"><?lsmb text('Date') ?>:
<?lsmb header.payment_date ?></span></th>
<th rowspan="5" width="30%" class="c1"><span class="c6"><?lsmb text('Signature') ?><br>
<br>
<br>
<br>
<br>
<br>
<br>
___________________________________________<br>
<?lsmb text('Identification') ?></span></th>
</tr>
<tr>
<td width="70%" class="c7" colspan="3"><span><b><?lsmb text('Pay in behalf of') ?>:</b>
<?lsmb header.legal_name ?></span></td>
</tr>
<tr>
<td class="c7" colspan="3"><span><b><?lsmb text('The amount of') ?>:</b>
<?lsmb header.amount2text -?></span></td>
</tr>
<tr>
<td class="c7" colspan="3"><span><b><?lsmb text('This document has been approved by')
-?>:</b><?lsmb header.employee_first_name -?>&nbsp;<?lsmb header.employee_last_name -?></span></td>
</tr>
<tr>
<td colspan="3" class="c7"><span><b><?lsmb text('Approved signature')?>:</b>
____________________________</span></td>
</tr>
<tr>
<td class="c7" colspan="3"><span><b><?lsmb text('Notes') ?>:</b>
<?lsmb header.notes ?></span></td>
</tr>
</table>
</body>
</html>
+196
View File
@@ -0,0 +1,196 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2023-04-03
File: print_cash_transfer.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta
name="generator"
content="HTML Tidy for HTML5 for Linux version 5.6.0"
/>
<title><?lsmb form.print_title ?></title>
<style type="text/css">
body {
margin: 10px 20px;
}
span {
display: block;
}
label {
display: block;
font-weight: bold;
margin-right: 15px;
}
label::after {
content: ':';
float: right;
}
table {
width: 100%;
}
table, td, th {
border: 0.5px solid darkgray;
}
th {
background-color: lightgray;
}
h4 {
margin: 10px 0;
}
.header-area {
display: grid;
grid-template-columns: auto 1fr auto;
}
.logo {
align-self: end;
}
.logo > img {
width: 160px;
height: 120px;
}
.company-info {
align-self: end;
padding-left: 20px;
border-bottom: 2px solid black;
}
.company-name {
margin: 10px 0 0 0;
}
.title {
border-bottom: 2px solid black;
align-self: end;
}
.title > h3 {
margin: 0;
text-transform: uppercase;
}
.voucher-header {
display: grid;
grid-template-columns: 1fr 1fr;
margin-top: 10px;
}
.flex-label {
display: flex;
}
.flex-label > div {
display: flex;
flex-direction: column;
}
.flex-label > div:first-child {
width: fit-content;
}
.flex-label > div > * {
padding: 3px 0;
}
.voucher-info {
justify-self: end;
margin-right: 40px;
}
.left-border {
border: 0;
border-left: 0.5px solid darkgray;
width: 5em;
padding: 10px 0;
}
.right-border {
border: 0;
border-right: 0.5px solid darkgray;
padding-right: 10px;
padding-top: 15px;
}
.signature-area {
margin-top: 10px;
}
.signature-area th,
.signature-area td {
padding-left: 20px;
}
footer {
width: 100%;
text-align: center;
}
</style>
</head>
<body>
<?lsmb column_count = 0 -?>
<div class="header-area">
<div class="logo">
<!-- If you want to use a logo uncomment following line, remove # from dbfile_base64 and set images file name -->
<!-- <img class="logo" src="data:image/png;base64,<?lsmb #dbfile_base64('logo.jpg') ?>"/> -->
</div>
<div class="company-info">
<h2 class="company-name"><?lsmb form.company ?></h2>
<span class="company-address"><?lsmb form.address ?></span>
<span class="company-phone">Ph: <?lsmb form.tel ?></span>
</div>
<div class="title">
<h3><?lsmb form.print_title ?></h3>
</div>
</div>
<div class="voucher-header">
<div class="eca-info flex-label">
<div>
<label>Customer/Supplier Name</label>
<label>Customer/Supplier Code</label>
<label>Description</label>
<label>Exchange Rate</label>
<label>Amount</label>
<label>In Words</label>
<label>Additional Remarks</label>
</div>
<div>
<span>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ </span>
<span>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ </span>
<span><?lsmb form.description ?></span>
<span><?lsmb form.exchange_rate ?></span>
<span><?lsmb form.amount ?> <?lsmb form.curr ?></span>
<span style="text-transform: uppercase;"><?lsmb form.text_amount ?> <?lsmb form.curr ?> ONLY</span>
<span><?lsmb form.notes ?></span>
</div>
</div>
<div class="voucher-info flex-label">
<div>
<label>Voucher No</label>
<label>Date</label>
</div>
<div>
<span><?lsmb form.reference ?></span>
<span><?lsmb form.transdate ?></span>
</div>
</div>
</div>
<div class="signature-area">
<table cellspacing="0">
<tr>
<th colspan="2" align="left">Approved By</th>
<th colspan="2" align="left">Received By</th>
<th colspan="2" align="left">Paid By</th>
</tr>
<tr>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
</tr>
<tr>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
</tr>
</table>
</div>
</body>
</html>
+226
View File
@@ -0,0 +1,226 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2023-04-03
File: print_journal_entry.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta
name="generator"
content="HTML Tidy for HTML5 for Linux version 5.6.0"
/>
<title><?lsmb form.print_title ?></title>
<style type="text/css">
body {
margin: 10px 20px;
}
span {
display: block;
}
label {
display: block;
font-weight: bold;
margin-right: 15px;
}
label::after {
content: ':';
float: right;
}
table {
width: 100%;
}
table, td, th {
border: 0.5px solid darkgray;
}
th {
background-color: lightgray;
}
h4 {
margin: 10px 0;
}
.header-area {
display: grid;
grid-template-columns: auto 1fr auto;
}
.logo {
align-self: end;
}
.logo > img {
width: 160px;
height: 120px;
}
.company-info {
align-self: end;
padding-left: 20px;
border-bottom: 2px solid black;
}
.company-name {
margin: 10px 0 0 0;
}
.title {
border-bottom: 2px solid black;
align-self: end;
}
.title > h3 {
margin: 0;
text-transform: uppercase;
}
.voucher-header {
display: grid;
grid-template-columns: 1fr 1fr;
margin-top: 10px;
}
.flex-label {
display: flex;
}
.flex-label > div {
display: flex;
flex-direction: column;
}
.flex-label > div:first-child {
width: fit-content;
}
.flex-label > div > * {
padding: 3px 0;
}
.voucher-info {
justify-self: end;
margin-right: 40px;
}
.left-border {
border: 0;
border-left: 0.5px solid darkgray;
width: 5em;
padding: 10px 0;
}
.right-border {
border: 0;
border-right: 0.5px solid darkgray;
padding-right: 10px;
padding-top: 15px;
}
.signature-area {
margin-top: 10px;
}
.signature-area th,
.signature-area td {
padding-left: 20px;
}
footer {
width: 100%;
text-align: center;
}
</style>
</head>
<body>
<?lsmb column_count = 0 -?>
<div class="header-area">
<div class="logo">
<!-- If you want to use a logo uncomment following line, remove # from dbfile_base64 and set images file name -->
<!-- <img class="logo" src="data:image/png;base64,<?lsmb #dbfile_base64('logo.jpg') ?>"/> -->
</div>
<div class="company-info">
<h2 class="company-name"><?lsmb form.company ?></h2>
<span class="company-address"><?lsmb form.address ?></span>
<span class="company-phone">Ph: <?lsmb form.tel ?></span>
</div>
<div class="title">
<h3><?lsmb form.print_title ?></h3>
</div>
</div>
<div class="voucher-header">
<div class="eca-info flex-label">
<div>
<label>Reference</label>
<label>Description</label>
<label>Notes</label>
</div>
<div>
<span><?lsmb form.reference ?></span>
<span><?lsmb form.description ?></span>
<span><?lsmb form.notes ?></span>
</div>
</div>
<div class="voucher-info flex-label">
<div>
<label>Date</label>
</div>
<div>
<span><?lsmb form.transdate ?></span>
</div>
</div>
</div>
<div class="invoice-data">
<table cellspacing="0">
<tr align="center">
<th>Account</th>
<th>Curr</th>
<th>Debit</th>
<th>Credit</th>
<th>Source</th>
<th>Memo</th>
<?lsmb FOREACH cls IN form.bu_class ?>
<th class="listheading"><?lsmb cls.label ?></th>
<?lsmb END ?>
</tr>
<?lsmb FOREACH displayrow IN displayrows;
IF displayrow.accno; ?>
<tr>
<td><?lsmb displayrow.accno ?></td>
<td><?lsmb displayrow.curr ?></td>
<td align="right"><?lsmb displayrow.debit ?></td>
<td align="right"><?lsmb displayrow.credit ?></td>
<td><?lsmb displayrow.source ?></td>
<td><?lsmb displayrow.memo ?></td>
<?lsmb FOREACH cls IN form.bu_class ?>
<td>
<?lsmb clsid = cls.id;
bucid = "b_unit_$clsid";
displayrow.${bucid}; ?>
</td>
<?lsmb END ?>
</tr>
<?lsmb END;
END -?>
<tr>
<td colspan="2">&nbsp;</td>
<td align="right"><?lsmb form.totaldebit ?></td>
<td align="right"><?lsmb form.totalcredit ?></td>
<td colspan="15">&nbsp;</td>
</tr>
</table>
</div>
<div class="signature-area">
<table cellspacing="0">
<tr>
<th colspan="2" align="left">Approved By</th>
<th colspan="2" align="left">Received By</th>
<th colspan="2" align="left">Paid By</th>
</tr>
<tr>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
<td class="left-border">Signature</td>
<td class="right-border"><hr/></td>
</tr>
<tr>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
<td class="left-border">Name</td>
<td class="right-border"><hr/></td>
</tr>
</table>
</div>
</body>
</html>
+186
View File
@@ -0,0 +1,186 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: product_receipt.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Product Receipt') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Product Receipt') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To:') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To:') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF vendorphone ?><br>
<?lsmb text('Tel: [_1]', vendorphone) ?> <?lsmb END ?> <?lsmb IF vendorfax ?><br>
<?lsmb text('Fax: [_1]', vendorfax) ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left"><?lsmb text('Invoice #') ?></th>
<th width="17%" align="left"><?lsmb text('Receipt Date') ?></th>
<th width="17%" align="left"><?lsmb text('Contact') ?></th>
<th width="17%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left"><?lsmb text('Ship Via') ?></th>
</tr>
<tr>
<td><?lsmb invnumber ?></td>
<td><?lsmb transdate ?></td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Price') ?></span></th>
<th><span class="c2">%</span></th>
<th><span class="c2"><?lsmb text('Amount') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb sellprice.${loop_count} ?></td>
<td align="right"><?lsmb discountrate.${loop_count} ?></td>
<td align="right"><?lsmb linetotal.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="8">
<hr noshade>
</td>
</tr>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="7" align="right"><?lsmb text('Total') ?></th>
<th colspan="1" align="right"><?lsmb ordtotal ?></th><?lsmb ELSE ?>
<th colspan="7" align="right"><?lsmb text('Subtotal') ?></th>
<td colspan="1" align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="7" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>on
<?lsmb taxbase.${loop_count} ?> @ <?lsmb taxrate.${loop_count} ?> %</th>
<td colspan="1" align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="4">&nbsp;</td>
<td colspan="4">
<hr noshade>
</td>
</tr><?lsmb IF NOT taxincluded ?>
<tr>
<th colspan="7" align="right"><?lsmb text('Total') ?></th>
<td colspan="1" align="right"><?lsmb ordtotal ?></td><?lsmb END ?><?lsmb IF terms ?>
</tr>
<tr>
<td colspan="4"><?lsmb text('Terms Net [_1] days', terms) ?></td>
<th colspan="3" align="right"><?lsmb text('Total') ?></th>
<th colspan="1" align="right"><?lsmb ordtotal ?></th>
</tr><?lsmb END ?><?lsmb IF taxincluded ?>
<tr>
<td colspan="2"><?lsmb text('Tax included') ?></td>
</tr><?lsmb END ?>
<tr>
<td>&nbsp;</td>
</tr><?lsmb IF ordtotal ?>
<tr>
<td colspan="8" align="right"><?lsmb text('All prices in [_1] funds', currency) ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr><?lsmb IF notes ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td><?lsmb text('Notes') ?></td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="70%">&nbsp;</td>
<td width="30%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+180
View File
@@ -0,0 +1,180 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: product_receipt.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb invnumber ?>}{<?lsmb company ?>\hfill <?lsmb invnumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{To}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb text('Attn: [_1]', contact) ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF vendorphone ?>
<?lsmb text('Tel: [_1]', vendorphone) ?>
<?lsmb END ?>
<?lsmb IF vendorfax ?>
<?lsmb text('Fax: [_1]', vendorfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb text('Attn: [_1]', shiptocontact) ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
<?lsmb text('Tel: [_1]', shiptophone) ?>
<?lsmb END ?>/
<?lsmb IF shiptofax ?>
<?lsmb text('Fax: [_1]', shiptofax) ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Product Receipt') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Date') ?>}
& \textbf{<?lsmb text('Required by') ?>} & \textbf{<?lsmb text('Contact') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5ex]
\hline
<?lsmb invnumber ?> & <?lsmb transdate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}llrlrr@{\extracolsep{0pt}}}
\textbf{<?lsmb text('Number') ?>} & \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Qty') ?>} &
\textbf{<?lsmb text('Unit') ?>} & \textbf{<?lsmb text('Price') ?>}
& \textbf{<?lsmb text('Amount') ?>} \\
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb sellprice.${lc} ?> &
<?lsmb linetotal.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{0.2cm}
\hfill
\begin{tabularx}{7cm}{Xr@{\hspace{1cm}}r@{}}
& Total & <?lsmb invtotal ?>\\
\end{tabularx}
\vspace{0.3cm}
\hfill
<?lsmb text('All prices in [_1].', currency) ?>
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
%\renewcommand{\thefootnote}{\fnsymbol{footnote}}
%\footnotetext[1]{\tiny }
\end{document}
<?lsmb END -?>
+188
View File
@@ -0,0 +1,188 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: purchase_order.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Purchase Order') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Purchase Order') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To:') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To:') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF vendorphone ?><br>
<?lsmb text('Tel: [_1]', vendorphone) ?> <?lsmb END ?> <?lsmb IF vendorfax ?><br>
<?lsmb text('Fax: [_1]', vendorfax) ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left"><?lsmb text('Order #') ?></th>
<th width="17%" align="left"><?lsmb text('Order Date') ?></th>
<th width="17%" align="left"><?lsmb text('Required by') ?></th>
<th width="17%" align="left"><?lsmb text('Contact') ?></th>
<th width="17%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left"><?lsmb text('Ship Via') ?></th>
</tr>
<tr>
<td><?lsmb ordnumber ?></td>
<td><?lsmb orddate ?></td>
<td><?lsmb reqdate ?></td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Price') ?></span></th>
<th><span class="c2">%</span></th>
<th><span class="c2"><?lsmb text('Amount') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb sellprice.${loop_count} ?></td>
<td align="right"><?lsmb discountrate.${loop_count} ?></td>
<td align="right"><?lsmb linetotal.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="8">
<hr noshade>
</td>
</tr>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="7" align="right"><?lsmb text('Total') ?></th>
<th colspan="1" align="right"><?lsmb ordtotal ?></th><?lsmb ELSE ?>
<th colspan="7" align="right"><?lsmb text('Subtotal') ?></th>
<td colspan="1" align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="7" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>on
<?lsmb taxbase.${loop_count} ?> @ <?lsmb taxrate.${loop_count} ?> %</th>
<td colspan="1" align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="4">&nbsp;</td>
<td colspan="4">
<hr noshade>
</td>
</tr><?lsmb IF NOT taxincluded ?>
<tr>
<th colspan="7" align="right"><?lsmb text('Total') ?></th>
<td colspan="1" align="right"><?lsmb ordtotal ?></td><?lsmb END ?><?lsmb IF terms ?>
</tr>
<tr>
<td colspan="4"><?lsmb text('Terms Net [_1] days', terms) ?></td>
<th colspan="3" align="right"><?lsmb text('Total') ?></th>
<th colspan="1" align="right"><?lsmb ordtotal ?></th>
</tr><?lsmb END ?><?lsmb IF taxincluded ?>
<tr>
<td colspan="2"><?lsmb text('Tax included') ?></td>
</tr><?lsmb END ?>
<tr>
<td>&nbsp;</td>
</tr><?lsmb IF ordtotal ?>
<tr>
<td colspan="8" align="right"><?lsmb text('All prices in [_1] funds', currency) ?></td>
</tr><?lsmb END ?>
</table>
</td>
</tr><?lsmb IF notes ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td><?lsmb text('Notes') ?></td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="70%">&nbsp;</td>
<td width="30%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+186
View File
@@ -0,0 +1,186 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: purchase_order.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{To}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb text('Attn: [_1]', contact) ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF vendorphone ?>
<?lsmb text('Tel: [_1]', vendorphone) ?>
<?lsmb END ?>
<?lsmb IF vendorfax ?>
<?lsmb text('Fax: [_1]', vendorfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb text('Attn: [_1]', shiptocontact) ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
<?lsmb text('Tel: [_1]', shiptophone) ?>
<?lsmb END ?>/
<?lsmb IF shiptofax ?>
<?lsmb text('Fax: [_1]', shiptofax) ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Purchase Order') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{<?lsmb text('Order #') ?>} & \textbf{<?lsmb text('Date') ?>}
& \textbf{<?lsmb text('Required by') ?>} & \textbf{<?lsmb text('Contact') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5ex]
\hline
<?lsmb ordnumber ?> & <?lsmb orddate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}llrlrr@{\extracolsep{0pt}}}
\textbf{<?lsmb text('Number') ?>} & \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Qty') ?>} &
\textbf{<?lsmb text('Unit') ?>} & \textbf{<?lsmb text('Price') ?>}
& \textbf{<?lsmb text('Amount') ?>} \\
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb sellprice.${lc} ?> &
<?lsmb linetotal.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{0.2cm}
\hfill
\begin{tabularx}{7cm}{Xr@{\hspace{1cm}}r@{}}
& Subtotal & <?lsmb subtotal ?> \\
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
& <?lsmb taxdescription.${lc} ?> on <?lsmb taxbase.${lc} ?> & <?lsmb tax.${lc} ?>\\
<?lsmb END ?>
\hline
& Total & <?lsmb ordtotal ?>\\
\end{tabularx}
\vspace{0.3cm}
\hfill
<?lsmb text('All prices in [_1].', currency) ?>
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
%\renewcommand{\thefootnote}{\fnsymbol{footnote}}
%\footnotetext[1]{\tiny }
\end{document}
<?lsmb END -?>
+95
View File
@@ -0,0 +1,95 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: receipt.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{9pt}{9pt}\selectfont
\fi
\parbox[t]{12cm}{
<?lsmb company ?>
<?lsmb address ?>}
\hfill
\parbox[t]{6cm}{\hfill <?lsmb source ?>}
\vspace*{0.6cm}
<?lsmb text_amount ?> \dotfill <?lsmb decimal ?>/100 \makebox[0.5cm]{\hfill}
\vspace{0.5cm}
\hfill <?lsmb datepaid ?> \makebox[2cm]{\hfill} <?lsmb amount ?>
% different date format for datepaid
% <?lsmb DD ?><?lsmb MM ?><?lsmb YYYY ?>
\vspace{0.5cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{1.8cm}
<?lsmb memo ?>
\vspace{0.8cm}
<?lsmb company ?>
\vspace{0.5cm}
<?lsmb name ?> \hfill <?lsmb datepaid ?> \hfill <?lsmb source ?>
\vspace{0.5cm}
\begin{tabularx}{\textwidth}{lXrr@{}}
\textbf{<?lsmb text('Invoice No.') ?>} & \textbf{<?lsmb text('Invoice Date') ?>}
& \textbf{<?lsmb text('Due') ?>} & \textbf{<?lsmb text('Applied') ?>} \\
<?lsmb FOREACH invnumber ?>
<?lsmb lc = loop.index ?>
<?lsmb invnumber.${lc} ?> & <?lsmb invdate.${lc} ?> \dotfill
& <?lsmb due.${lc} ?> & <?lsmb paid.${lc} ?> \\
<?lsmb END ?>
\end{tabularx}
\vspace{1cm}
<?lsmb memo ?>
\vfill
\end{document}
<?lsmb END -?>
+144
View File
@@ -0,0 +1,144 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: request_quotation.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Request for Quotation') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Request for Quotation') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To:') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To:') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF vendorphone ?><br>
<?lsmb text('Tel: [_1]', vendorphone) ?> <?lsmb END ?> <?lsmb IF vendorfax ?><br>
<?lsmb text('Fax: [_1]', vendorfax) ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddr2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb text('Attn: [_1]', shiptocontact) ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left"><?lsmb text('RFQ #') ?></th>
<th width="17%" align="left"><?lsmb text('Date') ?></th>
<th width="17%" align="left"><?lsmb text('Required by') ?></th>
<th width="17%" align="left"><?lsmb text('Contact') ?></th>
<th width="17%" align="left"><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left"><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb quonumber ?></td>
<td><?lsmb quodate ?></td>
<td><?lsmb reqdate ?>&nbsp;</td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><?lsmb text('Please provide price and delivery time for the following items:') ?></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%">
<tr>
<th align="right"><?lsmb text('Item') ?></th>
<th align="left"><?lsmb text('Number') ?></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><?lsmb text('Qty') ?></th>
<th>&nbsp;</th>
<th><?lsmb text('Delivery') ?></th>
<th></th>
<th></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="8">
<hr noshade>
</td>
</tr>
</table>
</td>
</tr><?lsmb IF notes ?>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td></td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr>
</table>
</td>
</tr><?lsmb END ?>
</table>
</body>
</html>
+165
View File
@@ -0,0 +1,165 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: request_quotation.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{<?lsmb text('To') ?>}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF vendorphone ?>
<?lsmb text('Tel: [_1]', vendorphone) ?>
<?lsmb END ?>
<?lsmb IF vendorfax ?>
<?lsmb text('Fax: [_1]', vendorfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb shiptocontact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
<?lsmb text('Tel: [_1]', shiptophone) ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
<?lsmb text('Fax: [_1]', shiptofax) ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Request for Quotation') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{<?lsmb text('RFQ #') ?>} & \textbf{<?lsmb text('Date') ?>}
& \textbf{<?lsmb text('Required by') ?>} & \textbf{<?lsmb text('Contact') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5ex]
\hline
<?lsmb quonumber ?> & <?lsmb quodate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
<?lsmb text('Please provide price and delivery time for the following items:') ?>
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}lcrllrr@{\extracolsep{\fill}}}
\textbf{<?lsmb text('Number') ?>} & \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Qty') ?>} & & \textbf{<?lsmb text('Delivery') ?>}
& \textbf{<?lsmb text('Unit Price') ?>} & \textbf{<?lsmb text('Extended') ?>}
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\hfill
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\end{document}
<?lsmb END -?>
+185
View File
@@ -0,0 +1,185 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: sales_order.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Sales Order') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
span.c4 {font-size: 51%}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Sales Order') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF customerphone ?><br>
<?lsmb text('Tel: [_1]', customerphone) ?> <?lsmb END ?> <?lsmb IF customerfax ?><br>
<?lsmb text('Fax: [_1]', customerfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb shiptocontact ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?> <?lsmb IF shiptoemail ?><br>
<?lsmb shiptoemail ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left" nowrap><?lsmb text('Order #') ?></th>
<th width="17%" align="left"><?lsmb text('Order Date') ?></th>
<th width="17%" align="left"><?lsmb text('Required by') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Salesperson') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left" nowrap><?lsmb text('Ship Via') ?></th>
</tr>
<tr>
<td><?lsmb ordnumber ?></td>
<td><?lsmb orddate ?></td>
<td><?lsmb reqdate ?></td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Price') ?></span></th>
<th><span class="c2"><?lsmb text('Disc %') ?></span></th>
<th><span class="c2"><?lsmb text('Amount') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb sellprice.${loop_count} ?></td>
<td align="right"><?lsmb discountrate.${loop_count} ?></td>
<td align="right"><?lsmb linetotal.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="8">
<hr noshade>
</td>
</tr>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="6" align="right"><?lsmb text('Total') ?></th>
<td colspan="2" align="right"><?lsmb invtotal ?></td><?lsmb ELSE ?>
<th colspan="6" align="right"><?lsmb text('Subtotal') ?></th>
<td colspan="2" align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="6" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>on
<?lsmb taxbase.${loop_count} ?> @ <?lsmb taxrate.${loop_count} ?> %</th>
<td colspan="2" align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="4">&nbsp;</td>
<td colspan="4">
<hr noshade>
</td>
</tr>
<tr>
<td colspan="4"><?lsmb text_amount ?>***** <?lsmb decimal ?>/100 <?lsmb IF terms ?><br>
<?lsmb text('Terms Net [_1] days', terms) ?> <?lsmb END ?></td>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<th colspan="2" align="right"><?lsmb ordtotal ?></th>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<?lsmb IF notes ?>
<td><?lsmb text('Notes') ?></td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td><?lsmb END ?>
<td align="right" nowrap><?lsmb text('All prices in [_1] Funds', currency) ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="60%"><span class=
"c4"><?lsmb text('Special order items are subject to a 10% order cancellation fee.') ?></span></td>
<td width="40%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+196
View File
@@ -0,0 +1,196 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: sales_order.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}{<?lsmb company ?>\hfill <?lsmb ordnumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{To}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF customerphone ?>
<?lsmb text('Tel: [_1]', customerphone) ?>
<?lsmb END ?>
<?lsmb IF customerfax ?>
<?lsmb text('Fax: [_1]', customerfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb shiptocontact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
<?lsmb text('Tel: [_1]', shiptophone) ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
<?lsmb text('Fax: [_1]', shiptofax) ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Sales Order') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{<?lsmb text('Order #') ?>} & \textbf{<?lsmb text('Order Date') ?>}
& \textbf{<?lsmb text('Required by') ?>}
& \textbf{<?lsmb text('Salesperson') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship Via') ?>} \\ [0.5em]
\hline
<?lsmb ordnumber ?> & <?lsmb orddate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}rlcrlrrr@{\extracolsep{0pt}}}
\textbf{<?lsmb text('Item') ?>} & \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>} & \textbf{<?lsmb text('Qty') ?>} &
\textbf{<?lsmb text('Unit') ?>} & \textbf{<?lsmb text('Price') ?>}
& \textbf{<?lsmb text('Disc %') ?>}
& \textbf{<?lsmb text('Amount') ?>}
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb sellprice.${lc} ?> &
<?lsmb discountrate.${lc} ?> &
<?lsmb linetotal.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{0.2cm}
\hfill
\begin{tabularx}{7cm}{Xr@{\hspace{1cm}}r@{}}
& Subtotal & <?lsmb subtotal ?> \\
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
& <?lsmb taxdescription.${lc} ?> on <?lsmb taxbase.${lc} ?> & <?lsmb tax.${lc} ?>\\
<?lsmb END ?>
\hline
& Total & <?lsmb ordtotal ?>\\
\end{tabularx}
\vspace{0.3cm}
<?lsmb text_amount ?> ***** <?lsmb decimal ?>/100
\hfill
<?lsmb text('All prices in [_1].', currency) ?>
<?lsmb IF terms ?>
<?lsmb text('Terms: Net [_1] days', terms) ?>
<?lsmb END ?>
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\vfill
\centerline{\textbf{<?lsmb text('Thank You for your valued business!') ?>}}
\rule{\textwidth}{0.5pt}
\end{document}
<?lsmb END -?>
+168
View File
@@ -0,0 +1,168 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: sales_quotation.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Quotation') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
span.c4 {font-size: 51%}
tr.c3 {background-color: black}
span.c2 {color: white}
th.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3" class="c1">
<h4><?lsmb text('Quotation') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF customerphone ?><br>
<?lsmb text('Tel: [_1]', customerphone) ?> <?lsmb END ?> <?lsmb IF customerfax ?><br>
<?lsmb text('Fax: [_1]', customerfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left" nowrap><?lsmb text('Number') ?></th>
<th width="17%" align="left"><?lsmb text('Date') ?></th>
<th width="17%" align="left"><?lsmb text('Valid until') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Contact') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left" nowrap><?lsmb text('Ship via') ?></th>
</tr>
<tr>
<td><?lsmb quonumber ?></td>
<td><?lsmb quodate ?></td>
<td><?lsmb reqdate ?></td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Price') ?></span></th>
<th><span class="c2"><?lsmb text('Disc %') ?></span></th>
<th><span class="c2"><?lsmb text('Amount') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?></td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td align="right"><?lsmb sellprice.${loop_count} ?></td>
<td align="right"><?lsmb discountrate.${loop_count} ?></td>
<td align="right"><?lsmb linetotal.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="8">
<hr noshade>
</td>
</tr>
<tr>
<?lsmb IF taxincluded ?>
<th colspan="6" align="right"><?lsmb text('Total') ?></th>
<td colspan="2" align="right"><?lsmb invtotal ?></td><?lsmb ELSE ?>
<th colspan="6" align="right"><?lsmb text('Subtotal') ?></th>
<td colspan="2" align="right"><?lsmb subtotal ?></td><?lsmb END ?>
</tr><?lsmb FOREACH tax ?><?lsmb loop_count = loop.index ?>
<tr>
<th colspan="6" align="right">
<?lsmb taxdescription.${loop_count}.replace("\n","<br />") ?>on
<?lsmb taxbase.${loop_count} ?> @ <?lsmb taxrate.${loop_count} ?> %</th>
<td colspan="2" align="right"><?lsmb tax.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="4">&nbsp;</td>
<td colspan="4">
<hr noshade>
</td>
</tr>
<tr>
<td colspan="4">&nbsp; <?lsmb IF terms ?> <?lsmb text('Terms Net [_1] days', terms) ?>
<?lsmb END ?></td>
<th colspan="2" align="right"><?lsmb text('Total') ?></th>
<th colspan="2" align="right"><?lsmb quototal ?></th>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<?lsmb IF notes ?>
<td><?lsmb text('Notes') ?></td>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td><?lsmb END ?>
<td align="right"><?lsmb text('All prices in [_1] Funds', currency) ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td width="60%"><span class="c4"><?lsmb
text('Special order items are subject to a 10% cancellation fee.')
?></span></td>
<td width="40%">
X
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+163
View File
@@ -0,0 +1,163 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: sales_quotation.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
\newsavebox{\ftr}
\sbox{\ftr}{
\parbox{\textwidth}{
\tiny
\rule[1.5em]{\textwidth}{0.5pt}
<?lsmb text('Special order items are subject to a 10\% cancellation fee.') ?>
}
}
<?lsmb INCLUDE letterhead ?>
\markboth{<?lsmb company ?>\hfill <?lsmb quonumber ?>}{<?lsmb company ?>\hfill <?lsmb quonumber ?>}
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF customerphone ?>
<?lsmb text('Tel: [_1]', customerphone) ?> ?>
<?lsmb END ?>
<?lsmb IF customerfax ?>
<?lsmb text('Fax: [_1]', customerfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Quotation') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{<?lsmb text('Quotation #') ?>} & \textbf{<?lsmb text('Date') ?>}
& \textbf{<?lsmb text('Valid until') ?>} & \textbf{<?lsmb text('Contact') ?>}
& \textbf{<?lsmb text('Shipping Point') ?>}
& \textbf{<?lsmb text('Ship via') ?>} \\ [0.5ex]
\hline
<?lsmb quonumber ?> & <?lsmb quodate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}llrlrrr@{\extracolsep{0pt}}}
\textbf{<?lsmb text('Number') ?>} & \textbf{<?lsmb text('Description') ?>}
& \textbf{<?lsmb text('Qty') ?>} & \textbf{<?lsmb text('Unit') ?>}
& \textbf{<?lsmb text('Price') ?>} & \textbf{<?lsmb text('Disc %') ?>}
& \textbf{<?lsmb text('Amount') ?>}
\endhead
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb number.${lc} ?> &
\begin{minipage}{2in}
\raggedright
<?lsmb item_description.${lc} ?>
\end{minipage}&
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb sellprice.${lc} ?> &
<?lsmb discountrate.${lc} ?> &
<?lsmb linetotal.${lc} ?> \\
<?lsmb END ?>
\hline \hline
\multicolumn{6}{r}{<?lsmb text('Subtotal') ?>} & <?lsmb subtotal ?> \\*
<?lsmb FOREACH tax ?>
<?lsmb lc = loop.index ?>
\multicolumn{6}{r}{<?lsmb taxdescription.${lc}
?> on <?lsmb taxbase.${lc} ?> }
& <?lsmb tax.${lc} ?> \\*
<?lsmb END ?>
\multicolumn{6}{r}{<?lsmb text('Total') ?> } & <?lsmb quototal ?> \\*
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{0.2cm}
\hfill
<?lsmb text('All prices in [_1].', currency) ?>
<?lsmb IF terms ?>
<?lsmb text('Terms: [_1] days', terms) ?>
<?lsmb END ?>
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\vfill
\hfill \parbox{7cm}{X \rule{6.5cm}{0.5pt}}
\rule{\textwidth}{0.5pt}
\usebox{\ftr}
\end{document}
<?lsmb END -?>
+45
View File
@@ -0,0 +1,45 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: shipping_label.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" } ?>
\documentclass{scrartcl}
\usepackage{iftex}
\ifpdftex
%% (pdf)latex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\else
\usepackage{fontspec}
\fi
\usepackage{tabularx}
\usepackage[paperheight=10.5cm, paperwidth=16.2cm,top=1cm,bottom=1.5cm,left=2cm,right=2cm]{geometry}
\begin{document}
<?lsmb IF shiptoaddress1 ?>
\noindent <?lsmb name ?>\\
<?lsmb shiptoaddress1 ?>\\
<?lsmb IF shiptoaddress2; shiptoaddress2 ?>\\ <?lsmb END ?>
<?lsmb- shiptocity ?>
<?lsmb IF shiptostate -?>
\hspace{-0.1cm}, <?lsmb shiptostate ?><?lsmb END ?> <?lsmb shiptozipcode ?>\\
<?lsmb shiptocountry ?>
<?lsmb ELSE ?>
\noindent <?lsmb name ?>\\
<?lsmb address1 ?> \\
<?lsmb- IF address2; address2 ?> \\<?lsmb END ?>
<?lsmb- city ?>
<?lsmb- IF state -?>, <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>\\
<?lsmb END ?>
\end{document}
<?lsmb END -?>
+114
View File
@@ -0,0 +1,114 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 2.0
Date: 2024-03-16
File: statement.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
2.0 Grouping of amounts by currency, in case of
exposure in multiple currencies against a single customer
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Statement') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
h4.c1 {text-transform:uppercase}
tr.subtotal td { font-weight: bold }
</style>
</head>
<body>
<?lsmb FOREACH statement IN statements ?>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Statement') ?></h4>
</th>
</tr>
<tr>
<td colspan="3" align="right"><?lsmb statementdate ?></td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="top">
<td><?lsmb statement.entity.name ?><br>
<?lsmb statement.address.line_one ?> <?lsmb IF statement.address.line_two ?><br>
<?lsmb statement.address.line_two ?> <?lsmb END ?><br>
<?lsmb statement.address.city ?> <?lsmb IF statement.address.state ?> ,
<?lsmb statement.address.state ?> <?lsmb END ?>
<?lsmb statement.address.mail_code ?><br></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%">
<tr>
<th align="left"><?lsmb text('Invoice #') ?></th>
<th align="left"><?lsmb text('Order #') ?></th>
<th width="10%"><?lsmb text('Date') ?></th>
<th width="10%"><?lsmb text('Due') ?></th>
<th width="10%"><?lsmb text('Current') ?></th>
<th width="10%"><?lsmb text('30') ?></th>
<th width="10%"><?lsmb text('60') ?></th>
<th width="10%"><?lsmb text('90') ?></th>
<th width="10%"><?lsmb text('Total') ?></th>
<th width="10%"><?lsmb text('Currency') ?></th>
</tr>
<tr>
<td colspan="10">
<hr size="1">
</td>
</tr>
<?lsmb- FOREACH invoice IN statement.aging.rows ;
IF invoice.html_class.defined ;
row_class = 'class="subtotal"';
ELSE ;
row_class = '';
END; ?>
<tr <?lsmb row_class ?> >
<?lsmb- IF invoice.html_class.defined ?>
<td><?lsmb text('Total') ?></td>
<?lsmb- ELSE ?>
<td><?lsmb invoice.invnumber ?></td>
<?lsmb- END ?>
<td><?lsmb invoice.ordnumber ?></td>
<td><?lsmb invoice.transdate ?></td>
<td><?lsmb invoice.duedate ?></td>
<td align="right"><?lsmb invoice.c0_tc ?></td>
<td align="right"><?lsmb invoice.c30_tc ?></td>
<td align="right"><?lsmb invoice.c60_tc ?></td>
<td align="right"><?lsmb invoice.c90_tc ?></td>
<td align="right"><?lsmb invoice.total_tc ?></td>
<td><?lsmb invoice.curr ?></td>
</tr>
<?lsmb- IF invoice.html_class == 'listsubtotal' ; ?>
<tr class="subtotal">
<td colspan="10">
<hr size="1">
</td>
</tr>
<?lsmb- END -?>
<?lsmb END -?>
</table>
</td>
</tr>
</table><?lsmb END ?>
</body>
</html>
+95
View File
@@ -0,0 +1,95 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 2.0
Date: 2024-03-16
File: statement.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
2.0 Grouping of amounts by currency, in case of
exposure in multiple currencies against a single customer
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
<?lsmb FOREACH statement IN statements ?>
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\parbox[t]{.5\textwidth}{
<?lsmb statement.entity.name ?>
<?lsmb statement.address.line_one ?>
<?lsmb statement.address.city ?> <?lsmb statement.address.state ?>
<?lsmb statement.address.mail_code ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Statement') ?>}} \hfill
\textbf{<?lsmb statementdate ?>}
\vspace{2cm}
\begin{tabular*}{\textwidth}{|ll@{\extracolsep\fill}ccrrrrrl|}
\hline
\textbf{<?lsmb text('Invoice #') ?>} & \textbf{<?lsmb text('Order #') ?>}
& \textbf{<?lsmb text('Date') ?>} & \textbf{<?lsmb text('Due') ?>} &
\textbf{<?lsmb text('Current') ?>} & \textbf{30} & \textbf{60} & \textbf{90} &
\textbf{<?lsmb text('Total') ?>} & \textbf{<?lsmb text('Currency') ?>} \\
\hline
<?lsmb- FOREACH invoice IN statement.aging.rows -?>
<?lsmb- IF invoice.html_class.defined -?>
% \hline
\textbf{<?lsmb text('Total') ?>} &
& & &
\textbf{<?lsmb invoice.c0_tc ?>} &
\textbf{<?lsmb invoice.c30_tc ?>} &
\textbf{<?lsmb invoice.c60_tc ?>} &
\textbf{<?lsmb invoice.c90_tc ?>} &
\textbf{<?lsmb invoice.total_tc ?>} &
\textbf{<?lsmb invoice.curr ?>} \\
<?lsmb- ELSE -?>
<?lsmb invoice.invnumber ?> &
<?lsmb invoice.ordnumber ?> &
<?lsmb invoice.transdate ?> &
<?lsmb invoice.duedate ?> &
<?lsmb invoice.c0_tc ?> &
<?lsmb invoice.c30_tc ?> &
<?lsmb invoice.c60_tc ?> &
<?lsmb invoice.c90_tc ?> &
<?lsmb invoice.total_tc ?> &
<?lsmb invoice.curr ?> \\
<?lsmb- END -?>
<?lsmb- IF invoice.html_class.defined -?>
\hline
<?lsmb- END -?>
<?lsmb END ?>
\end{tabular*}
\vspace{0.5cm}
\hfill
\pagebreak
<?lsmb END ?>
\end{document}
<?lsmb END -?>
+131
View File
@@ -0,0 +1,131 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: timecard.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Time Card') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Time Card') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr valign="top">
<td>
<table>
<tr>
<th align="left"><?lsmb text('Employee') ?></th>
<td><?lsmb employee ?></td>
</tr>
<tr>
<th align="left"><?lsmb text('ID') ?></th>
<td><?lsmb employee_id ?></td>
</tr>
</table>
</td>
<td align="right">
<table>
<tr>
<th align="left" nowrap><?lsmb text('Card ID') ?></th>
<td><?lsmb id ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Date') ?></th>
<td><?lsmb transdate ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('In') ?></th>
<td><?lsmb checkedin ?></td>
</tr>
<tr>
<th align="left"><?lsmb text('Out') ?></th>
<td><?lsmb checkedout ?></td>
</tr>
<tr>
<th align="left" nowrap><?lsmb text('Hours') ?></th>
<td><?lsmb qty ?></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%">
<tr valign="bottom">
<td>
<table>
<tr valign="top">
<th align="left"><?lsmb text('Job/Project #') ?></th>
<td><?lsmb projectnumber ?></td>
</tr>
<tr>
<th align="left"><?lsmb text('Description') ?></th>
<td><?lsmb projectdescription ?></td>
</tr>
<tr valign="top">
<th align="left"><?lsmb text('Labor/Service Code') ?></th>
<td><?lsmb partnumber ?></td>
</tr>
<tr>
<th align="left"><?lsmb text('Description') ?></th>
<td><?lsmb description ?></td>
</tr>
</table>
</td>
<td align="right">
<table>
<tr>
<th align="right"><?lsmb text('Rate') ?></th>
<td><?lsmb sellprice ?></td>
</tr>
<tr>
<th align="right"><?lsmb text('Total') ?></th>
<td><?lsmb total ?></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr><?lsmb IF notes ?>
<tr>
<td></td>
</tr>
<tr>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td>
</tr><?lsmb END ?>
</table>
</body>
</html>
+72
View File
@@ -0,0 +1,72 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: timecard.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
\centerline{\textbf{\MakeUppercase{<?lsmb text('Time Card') ?>}}}
\vspace*{0.5cm}
\begin{tabular}[t]{ll}
\textbf{<?lsmb text('Employee') ?>} & <?lsmb employee ?> \\
\textbf{<?lsmb text('ID') ?>} & <?lsmb employee_id ?> \\
\end{tabular}
\hfill
\begin{tabular}[t]{ll}
\textbf{<?lsmb text('Card ID') ?>} & <?lsmb id ?> \\
\textbf{<?lsmb text('Date') ?>} & <?lsmb transdate ?> \\
\textbf{<?lsmb text('In') ?>} & <?lsmb checkedin ?> \\
\textbf{<?lsmb text('Out') ?>} & <?lsmb checkedout ?> \\
\textbf{<?lsmb text('Hours') ?>} & <?lsmb qty ?> \\
\end{tabular}
\vspace{1cm}
\begin{tabular}[b]{ll}
\textbf{<?lsmb text('Job/Project #') ?>} & <?lsmb projectnumber ?> \\
\textbf{<?lsmb text('Description') ?>} & <?lsmb projectdescription ?> \\
\textbf{<?lsmb text('Labor/Service Code') ?>} & <?lsmb partnumber ?> \\
\textbf{<?lsmb text('Description') ?>} & <?lsmb description ?> \\
\end{tabular}
\hfill
\begin{tabular}[b]{lr}
\textbf{<?lsmb text('Rate') ?>} & <?lsmb sellprice ?> \\
\textbf{<?lsmb text('Total') ?>} & <?lsmb total ?> \\
\end{tabular}
\vspace{0.3cm}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
\end{document}
<?lsmb END -?>
+131
View File
@@ -0,0 +1,131 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.0
Date: 2021-01-04
File: work_order.html
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
-?>
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<title><?lsmb text('Work Order') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-color: white;
}
tr.c3 {background-color: black}
span.c2 {color: white}
h4.c1 {text-transform:uppercase}
</style>
</head>
<body>
<table width="100%">
<?lsmb INCLUDE letterhead ?>
<tr>
<th colspan="3">
<h4 class="c1"><?lsmb text('Work Order') ?></h4>
</th>
</tr>
<tr>
<td>
<table width="100%" cellspacing="0" cellpadding="0">
<tr class="c3">
<th align="left" width="50%"><span class="c2"><?lsmb text('To') ?></span></th>
<th align="left" width="50%"><span class="c2"><?lsmb text('Ship To') ?></span></th>
</tr>
<tr valign="top">
<td><?lsmb name ?><br>
<?lsmb address1 ?> <?lsmb IF address2 ?><br>
<?lsmb address2 ?> <?lsmb END ?><br>
<?lsmb city ?> <?lsmb IF state ?> , <?lsmb state ?> <?lsmb END ?> <?lsmb zipcode ?>
<?lsmb IF country ?><br>
<?lsmb country ?> <?lsmb END ?><br>
<?lsmb IF contact ?><br>
<?lsmb text('Attn: [_1]', contact) ?> <?lsmb END ?> <?lsmb IF customerphone ?><br>
<?lsmb text('Tel: [_1]', customerphone) ?> <?lsmb END ?> <?lsmb IF customerfax ?><br>
<?lsmb text('Fax: [_1]', customerfax) ?> <?lsmb END ?> <?lsmb IF email ?><br>
<?lsmb email ?> <?lsmb END ?></td>
<td><?lsmb shiptoname ?><br>
<?lsmb shiptoaddress1 ?> <?lsmb IF shiptoaddress2 ?><br>
<?lsmb shiptoaddress2 ?> <?lsmb END ?><br>
<?lsmb shiptocity ?> <?lsmb IF shiptostate ?> , <?lsmb shiptostate ?> <?lsmb END ?>
<?lsmb shiptozipcode ?> <?lsmb IF shiptocountry ?><br>
<?lsmb shiptocountry ?> <?lsmb END ?><br>
<?lsmb IF shiptocontact ?><br>
<?lsmb shiptocontact ?> <?lsmb END ?> <?lsmb IF shiptophone ?><br>
<?lsmb text('Tel: [_1]', shiptophone) ?> <?lsmb END ?> <?lsmb IF shiptofax ?><br>
<?lsmb text('Fax: [_1]', shiptofax) ?> <?lsmb END ?> <?lsmb IF shiptoemail ?><br>
<?lsmb shiptoemail ?> <?lsmb END ?></td>
</tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table width="100%" border="1">
<tr>
<th width="17%" align="left" nowrap><?lsmb text('Order #') ?></th>
<th width="17%" align="left"><?lsmb text('Order Date') ?></th>
<th width="17%" align="left"><?lsmb text('Required by') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Salesperson') ?></th>
<th width="17%" align="left" nowrap><?lsmb text('Shipping Point') ?></th>
<th width="15%" align="left" nowrap><?lsmb text('Ship Via') ?></th>
</tr>
<tr>
<td><?lsmb ordnumber ?></td>
<td><?lsmb orddate ?></td>
<td><?lsmb reqdate ?></td>
<td><?lsmb employee ?></td>
<td><?lsmb shippingpoint ?>&nbsp;</td>
<td><?lsmb shipvia ?>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%">
<tr class="c3">
<th align="right"><span class="c2"><?lsmb text('Item') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Number') ?></span></th>
<th align="left"><span class="c2"><?lsmb text('Description') ?></span></th>
<th><span class="c2"><?lsmb text('Qty') ?></span></th>
<th>&nbsp;</th>
<th><span class="c2"><?lsmb text('Bin') ?></span></th>
<th><span class="c2"><?lsmb text('Serial #') ?></span></th>
</tr><?lsmb FOREACH number ?><?lsmb loop_count = loop.index ?>
<tr valign="top">
<td align="right"><?lsmb runningnumber.${loop_count} ?>.</td>
<td><?lsmb number.${loop_count} ?></td>
<td><?lsmb item_description.${loop_count}.replace("\n","<br />") ?></td>
<td align="right"><?lsmb qty.${loop_count} ?></td>
<td><?lsmb unit.${loop_count} ?></td>
<td><?lsmb bin.${loop_count} ?></td>
<td><?lsmb serialnumber.${loop_count} ?></td>
</tr><?lsmb END ?>
<tr>
<td colspan="7">
<hr noshade>
</td>
</tr>
</table>
</td>
</tr>
<tr><?lsmb IF notes ?>
<td>
<?lsmb FOREACH P IN notes.split('\n\n') ?>
<p><?lsmb P ?></p><?lsmb END ?>
</td><?lsmb END ?>
</tr>
</table>
</body>
</html>
+168
View File
@@ -0,0 +1,168 @@
<?lsmb# This is a comment block; it's ignored by the template engine.
Version: 1.1
Date: 2022-07-22
File: work_order.tex
Set: demo
Template version numbers are explicitly not aligned across templates or
releases. No explicit versioning was applied before 2021-01-04.
Version Changes
1.1 Merged xelatex targetting templates with those targetting pdflatex
-?>
<?lsmb FILTER latex { format="$FORMAT($PROCESSOR)" };
# Uncomment the next line to overrule the value from System > Defaults;
# The value should be without the 'paper' suffix. E.g. "a4" for "a4paper"
# SETTINGS.papersize = "<your-format>";
INCLUDE "preamble.tex"; -?>
\begin{document}
\pagestyle{myheadings}
\thispagestyle{empty}
\ifpdftex
%% (pdf)latex
\fontfamily{cmss}\fontsize{10pt}{12pt}\selectfont
\fi
<?lsmb INCLUDE letterhead ?>
% Break old pagebreak directive
%<?xlsmb pagebreak 65 27 48 ?>
%\end{tabularx}
%
%\newpage
%
%\markboth{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}{<?xlsmb company ?>\hfill <?xlsmb ordnumber ?>}
%
%\begin{tabularx}{\textwidth}{@{}rlXrll@{}}
% \textbf{Item} & \textbf{Number} & \textbf{Description} & \textbf{Qt'y} &
% & \textbf{Serial Number} \\
%<?xlsmb end pagebreak ?>
\vspace*{0.5cm}
\parbox[t]{.5\textwidth}{
\textbf{To}
\vspace{0.3cm}
<?lsmb name ?>
<?lsmb address1 ?>
<?lsmb address2 ?>
<?lsmb city ?>
<?lsmb IF state ?>
\hspace{-0.1cm}, <?lsmb state ?>
<?lsmb END ?>
<?lsmb zipcode ?>
<?lsmb country ?>
\vspace{0.3cm}
<?lsmb IF contact ?>
<?lsmb contact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF customerphone ?>
<?lsmb text('Tel: [_1]', customerphone) ?>
<?lsmb END ?>
<?lsmb IF customerfax ?>
<?lsmb text('Fax: [_1]', customerfax) ?>
<?lsmb END ?>
<?lsmb email ?>
}
\parbox[t]{.5\textwidth}{
\textbf{Ship To}
\vspace{0.3cm}
<?lsmb shiptoname ?>
<?lsmb shiptoaddress1 ?>
<?lsmb shiptoaddress2 ?>
<?lsmb shiptocity ?>
<?lsmb IF shiptostate ?>
\hspace{-0.1cm}, <?lsmb shiptostate ?>
<?lsmb END ?>
<?lsmb shiptozipcode ?>
<?lsmb shiptocountry ?>
\vspace{0.3cm}
<?lsmb IF shiptocontact ?>
<?lsmb shiptocontact ?>
\vspace{0.2cm}
<?lsmb END ?>
<?lsmb IF shiptophone ?>
<?lsmb text('Tel: [_1]', shiptophone) ?>
<?lsmb END ?>
<?lsmb IF shiptofax ?>
<?lsmb text('Fax: [_1]', shiptofax) ?>
<?lsmb END ?>
<?lsmb shiptoemail ?>
}
\hfill
\vspace{1cm}
\textbf{\MakeUppercase{<?lsmb text('Work Order') ?>}}
\hfill
\vspace{1cm}
\begin{tabularx}{\textwidth}{*{6}{|X}|} \hline
\textbf{Order \#} & \textbf{Order Date} & \textbf{Required by} & \textbf{Salesperson} & \textbf{Shipping Point} & \textbf{Ship Via} \\ [0.5em]
\hline
<?lsmb ordnumber ?> & <?lsmb orddate ?> & <?lsmb reqdate ?> & <?lsmb employee ?> & <?lsmb shippingpoint ?> & <?lsmb shipvia ?> \\
\hline
\end{tabularx}
\vspace{1cm}
\begin{longtable}{@{\extracolsep{\fill}}rllrll@{}}
\textbf{<?lsmb text('Item') ?>} & \textbf{<?lsmb text('Number') ?>}
& \textbf{<?lsmb text('Description') ?>} & \textbf{<?lsmb text('Qty') ?>} &
& \textbf{<?lsmb text('Serial Number') ?>} \\
<?lsmb FOREACH number ?>
<?lsmb lc = loop.index ?>
<?lsmb runningnumber.${lc} ?> &
<?lsmb number.${lc} ?> &
<?lsmb item_description.${lc} ?> &
<?lsmb qty.${lc} ?> &
<?lsmb unit.${lc} ?> &
<?lsmb serialnumber.${lc} ?> \\
<?lsmb END ?>
\end{longtable}
\parbox{\textwidth}{
\rule{\textwidth}{2pt}
\vspace{12pt}
<?lsmb FOREACH P IN notes.split('\n\n+') ?>
<?lsmb P ?>\medskip
<?lsmb END ?>
}
\vfill
\end{document}
<?lsmb END -?>
Executable → Regular
+49 -29
View File
@@ -1,4 +1,5 @@
#!/bin/bash
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
set -euo pipefail
# --- CONFIGURATION ---
@@ -10,13 +11,14 @@ EXCLUDE_LIST=(120 121 150 151 152)
declare -A CONTAINER_MAP
CONTAINER_MAP[100]="/mnt/flash1/podman/lxc_servarr/"
CONTAINER_MAP[101]="/mnt/flash1/podman/lxc_second/"
CONTAINER_MAP[102]="/mnt/flash1/podman/lxc_bird/"
CONTAINER_MAP[108]="/mnt/flash1/podman/lxc_dns/" # Multiple paths allowed
CONTAINER_MAP[109]="/mnt/flash1/podman/lxc_immich/"
CONTAINER_MAP[111]="/mnt/flash1/podman/lxc_ollama/"
# --- UTILS ---
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*"
}
# Wrapper for commands that modify state
@@ -28,18 +30,17 @@ run_pct() {
fi
}
cleanup_sudoers() {
local ctid="${1:-}"
[ -z "$ctid" ] && return 0
pct exec "$ctid" -- rm -f /etc/sudoers.d/99-paru-nopass >/dev/null 2>&1 || true
}
ALL_CTIDS=$(pct list | awk 'NR>1 {print $1}')
for CTID in $ALL_CTIDS; do
# Check if CTID is in EXCLUDE_LIST
IS_EXCLUDED=false
for EXCLUDE in "${EXCLUDE_LIST[@]}"; do
if [[ "$CTID" == "$EXCLUDE" ]]; then
IS_EXCLUDED=true
break
fi
done
if [ "$IS_EXCLUDED" = true ]; then continue; fi
if [[ " ${EXCLUDE_LIST[*]} " =~ " $CTID " ]]; then continue; fi
if pct config "$CTID" | grep -q "template: 1"; then continue; fi
@@ -60,12 +61,13 @@ for CTID in $ALL_CTIDS; do
# --- 1. SETUP PASSWORDLESS FOR PARU ---
# Paru MUST run as a user, so we keep this sudoers rule for pacman.
log "[+] Configuring temporary sudoers for $AUR_USER..."
run_pct exec "$CTID" -- bash -c "echo '$AUR_USER ALL=(ALL) NOPASSWD: /usr/bin/pacman' > /etc/sudoers.d/99-paru-nopass"
run_pct exec "$CTID" -- bash -c "echo '$AUR_USER ALL=(root) NOPASSWD: /usr/bin/pacman' > /etc/sudoers.d/99-paru-nopass"
run_pct exec "$CTID" -- chmod 440 /etc/sudoers.d/99-paru-nopass
trap 'cleanup_sudoers "$CTID"' EXIT
# --- 2. OS UPDATER (User Context) ---
log "[+] Updating Arch packages (as $AUR_USER)..."
run_pct exec "$CTID" -- sudo -u "$AUR_USER" paru -Syu --noconfirm --cleanafter
run_pct exec "$CTID" -- sudo -u "$AUR_USER" paru -Syu --noconfirm --cleanafter || log "[WARN] Package update failed for CT $CTID"
# --- 3. PODMAN SCAN (Root Context) ---
if [[ -n "${CONTAINER_MAP[$CTID]:-}" ]]; then
@@ -75,54 +77,72 @@ for CTID in $ALL_CTIDS; do
log "[WARN] Storage driver is 'vfs'. Image operations will be slow."
fi
# Support multiple paths
ROOT_DIRS=${CONTAINER_MAP[$CTID]}
for ROOT_DIR in $ROOT_DIRS; do
log "[+] Scanning for compose files in: $ROOT_DIR"
# Determine Command
# Determine compose command once per container
FINAL_CMD=""
if pct exec "$CTID" -- podman compose version >/dev/null 2>&1; then
FINAL_CMD="podman compose"
elif pct exec "$CTID" -- podman-compose version >/dev/null 2>&1; then
FINAL_CMD="podman-compose"
elif pct exec "$CTID" -- docker-compose version >/dev/null 2>&1; then
FINAL_CMD="docker-compose"
else FINAL_CMD=""; fi
fi
if [ -z "$FINAL_CMD" ]; then
log "[WARN] No compose tool found in CT $CTID (tried: podman compose, podman-compose, docker-compose)"
else
log "[+] Using compose tool: $FINAL_CMD"
# Support multiple paths
ROOT_DIRS=${CONTAINER_MAP[$CTID]}
for ROOT_DIR in $ROOT_DIRS; do
log "[+] Scanning for compose files in: $ROOT_DIR"
if [ -n "$FINAL_CMD" ]; then
# Scan for files
if pct exec "$CTID" -- [ -d "$ROOT_DIR" ]; then
pct exec "$CTID" -- find "$ROOT_DIR" -maxdepth 2 -name "docker-compose.y*ml" | while read -r FILE; do
COMPOSE_FILES=$(pct exec "$CTID" -- find "$ROOT_DIR" -maxdepth 2 -name "docker-compose.y*ml" 2>/dev/null || true)
if [ -n "$COMPOSE_FILES" ]; then
echo "$COMPOSE_FILES" | while read -r FILE; do
[ -z "$FILE" ] && continue
DIR=$(dirname "$FILE")
log " -> Updating Project: $DIR"
log " -> Pulling new images (this may take a while)..."
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD pull"
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD pull" || {
log " [WARN] Image pull failed for $DIR"
}
if [ "$WAS_STOPPED" = true ]; then
log " -> Recreating stopped container (up --no-start)..."
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD up --no-start" ||
log " [WARN] Failed to recreate stopped container. Old images may not be pruned."
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD up --no-start" || {
log " [WARN] Failed to recreate stopped container in $DIR"
}
else
log " -> Applying updates (up -d --force-recreate)..."
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD up -d --force-recreate"
run_pct exec "$CTID" -- bash -c "cd \"$DIR\" && $FINAL_CMD up -d --force-recreate" || {
log " [WARN] Compose up failed for $DIR (exit: $?)"
}
fi
done
fi
else
log " [WARN] Root directory not found: $ROOT_DIR"
fi
fi
done
fi
log "[+] Pruning all unused images to save space..."
run_pct exec "$CTID" -- podman image prune -a -f
run_pct exec "$CTID" -- podman image prune -a -f || log "[WARN] Image prune failed for CT $CTID"
fi
# --- 4. MAINTENANCE ---
log "[+] Running maintenance tasks (journal, orphans)..."
run_pct exec "$CTID" -- journalctl --rotate
run_pct exec "$CTID" -- journalctl --vacuum-time=7d
run_pct exec "$CTID" -- bash -c "orphans=\$(pacman -Qtdq); if [ -n \"\$orphans\" ]; then echo \" -> Removing orphans: \$orphans\"; pacman -Rns \$orphans --noconfirm; fi"
run_pct exec "$CTID" -- journalctl --rotate || log "[WARN] journalctl rotate failed"
run_pct exec "$CTID" -- journalctl --vacuum-time=7d || log "[WARN] journalctl vacuum failed"
run_pct exec "$CTID" -- bash -c "orphans=\$(pacman -Qtdq); if [ -n \"\$orphans\" ]; then echo \" -> Removing orphans: \$orphans\"; pacman -Rns \$orphans --noconfirm; fi" || log "[WARN] Orphan removal failed"
# Cleanup temporary sudoers before possible shutdown
cleanup_sudoers "$CTID"
trap - EXIT
if [ "$WAS_STOPPED" = true ]; then
log "[+] Shutting down container (was previously stopped)..."
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
# --- Configuration ---
BACKUP_DIR="$HOME/paperless-backups"
PAPERLESS_DATA_DIR="/mnt/flash1/podman/lxc_servarr/browser/data"
DATEStamp=$(date +%F-%H%M)
DB_BACKUP="$BACKUP_DIR/paperless-db-backup-$DATEStamp.sql.gz"
FILES_BACKUP="$BACKUP_DIR/paperless-files-backup-$DATEStamp.tar.gz"
# --- Prepare ---
mkdir -p "$BACKUP_DIR"
# --- Step 1: Backup Database ---
echo "[$(date)] Starting database backup..."
sudo podman exec paperless-db pg_dump -U paperless paperless | gzip >"$DB_BACKUP"
if [ -s "$DB_BACKUP" ]; then
echo "[$(date)] ✅ Database backup created: $DB_BACKUP"
else
echo "[$(date)] ❌ Database backup failed"
rm -f "$DB_BACKUP"
exit 1
fi
# --- Step 2: Backup Disk Folders ---
echo "[$(date)] Starting files backup..."
tar czf "$FILES_BACKUP" \
"$PAPERLESS_DATA_DIR/paperless/media" \
"$PAPERLESS_DATA_DIR/paperless/data" \
"$PAPERLESS_DATA_DIR/paperless/export" \
"$PAPERLESS_DATA_DIR/.consume" \
2>/dev/null
if [ -s "$FILES_BACKUP" ]; then
echo "[$(date)] ✅ Files backup created: $FILES_BACKUP"
else
echo "[$(date)] ❌ Files backup failed"
rm -f "$FILES_BACKUP"
exit 1
fi
# --- Step 3: Verify ---
echo ""
echo "=== Backup Summary ==="
ls -lh "$DB_BACKUP" "$FILES_BACKUP"
# --- Step 4: Cleanup old backups (keep 14 days) ---
find "$BACKUP_DIR" -name "paperless-db-backup-*.sql.gz" -mtime +14 -delete
find "$BACKUP_DIR" -name "paperless-files-backup-*.tar.gz" -mtime +14 -delete
echo "[$(date)] ✅ Backup complete. Old backups older than 14 days removed."
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
# --- CONFIGURATION ---
# Replace with the actual path to your update script
UPDATE_SCRIPT="/mnt/tank/scripts/lxc-update.sh"
# Replace with your specific Uptime Kuma Push URL
KUMA_URL="https://uptime.liphlink.xyz/api/push/2H3mltg79B?status=up&msg=OK&ping="
# --- EXECUTION ---
# Run the LXC update script
# The script will process LXCs, run paru/pacman updates, and handle maintenance [1]
bash "$UPDATE_SCRIPT"
EXIT_CODE=$?
# --- PING LOGIC ---
if [ $EXIT_CODE -eq 0 ]; then
# If the script finishes the entire loop and maintenance tasks successfully [1]
/usr/bin/curl -fsS --retry 3 "${KUMA_URL}?status=up&msg=LXC_Updates_Successful"
else
# If any part of the script fails (due to set -e), send a 'down' status [1]
/usr/bin/curl -fsS --retry 3 "${KUMA_URL}?status=down&msg=LXC_Update_Failed_Exit_$EXIT_CODE"
fi
View File
File renamed without changes.
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
# --- CONFIGURATION ---
# Replace with the actual path to your update script
UPDATE_SCRIPT="/mnt/tank/scripts/paperless_backup.sh"
# Replace with your specific Uptime Kuma Push URL
KUMA_URL="https://uptime.liphlink.xyz/api/push/LW7OZFTXSa?status=up&msg=OK&ping="
# --- EXECUTION ---
# Run the LXC update script
# The script will process LXCs, run paru/pacman updates, and handle maintenance [1]
bash "$UPDATE_SCRIPT"
EXIT_CODE=$?
# --- PING LOGIC ---
if [ $EXIT_CODE -eq 0 ]; then
# If the script finishes the entire loop and maintenance tasks successfully [1]
/usr/bin/curl -fsS --retry 3 "${KUMA_URL}?status=up&msg=LXC_Updates_Successful"
else
# If any part of the script fails (due to set -e), send a 'down' status [1]
/usr/bin/curl -fsS --retry 3 "${KUMA_URL}?status=down&msg=LXC_Update_Failed_Exit_$EXIT_CODE"
fi
Executable → Regular
View File
File mode changed.
Executable → Regular
+4 -8
View File
@@ -1,17 +1,13 @@
#!/bin/bash
sudo chown -R 101000:100033 /mnt/{hdd1,hdd2,hdd3,hdd4,hdd5,ssd1,ssd2}
sudo chown -R 101000:101000 /mnt/tank/{audio,movies,series,shows,tutorial,documentaries,sports}
sudo chmod -R 777 /mnt/tank/{audio,movies,series,shows,tutorial,documentaries,sports}
sudo chmod -R 775 /mnt/{hdd1,hdd2,hdd3,hdd4,hdd5,ssd1,ssd2}
sudo chown -R 101000:101000 /mnt/tank/audio
sudo chmod -R 777 /mnt/tank/audio
sudo chown -R 101000:101000 /mnt/flash1/downloads/torrent/
sudo chmod -R 777 /mnt/flash1/downloads/torrent
sudo chown -R 101000:101000 /mnt/flash1/downloads/music
sudo chmod -R 755 /mnt/flash1/downloads/music
sudo chown -R 100033:101000 /mnt/ssd2/cloud_phil /mnt/flash1/podman/lxc_servarr/browser/data/.consume
sudo chmod -R 775 /mnt/ssd2/cloud_phil /mnt/flash1/podman/lxc_servarr/browser/data/.consume
sudo chown -R 101000:101000 /mnt/flash1/podman/lxc_servarr/nextcloud/config/obsidian/vaults
sudo chmod -R 755 /mnt/flash1/podman/lxc_servarr/nextcloud/config/obsidian/vaults
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
sudo chown -R 101000:100033 /mnt/ssd2/{ebooks_phil,cloud_phil}
sudo chmod -R 775 /mnt/ssd2/{ebooks_phil,cloud_phil}
# sudo chown -R 101000:100033 /mnt/{hdd1,hdd2,hdd3,hdd4,hdd5,ssd1,ssd2}
# sudo chmod -R 775 /mnt/{hdd1,hdd2,hdd3,hdd4,hdd5,ssd1,ssd2}
sudo chown -R 100033:101000 /mnt/flash1/podman/lxc_servarr/browser/data/.consume
sudo chmod -R 775 /mnt/flash1/podman/lxc_servarr/browser/data/.consume
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
# Step 1: Prompt user for Year and Tag [7][9]
read -p "Enter Year: " user_year
read -p "Enter Tag: " user_tag
# Process the first MP4 file found in the current directory
for file in *.mp4; do
if [ -f "$file" ]; then
# Extract Title and Resolution (Height) using ExifTool [4][5]
# -s3 returns just the value of the tag
title=$(exiftool -s3 -Title "$file")
# If the internal Title tag is empty, fall back to the filename [5]
if [ -z "$title" ]; then
title="${file%.*}"
fi
# Extracting image height for pixel count (e.g., 1080) [4]
height=$(exiftool -s3 -ImageHeight "$file")
if [ -n "$height" ]; then
pixel="${height}p"
else
pixel="UnknownRes"
fi
# Construct the new base name (without extension)
new_base_name="${title} ${user_year} ${pixel} ${user_tag}"
# Step 2: Rename the file [5][11]
new_file_name="${new_base_name}.mp4"
mv "$file" "$new_file_name"
# Step 3: Rename the parent directory [1][2]
# Identify current directory info
current_dir_path=$(pwd)
parent_dir=$(dirname "$current_dir_path")
current_folder_name=$(basename "$current_dir_path")
# Move to the parent directory to rename the 'root' folder
cd "$parent_dir" || exit
mv "$current_folder_name" "$new_base_name"
echo "Successfully renamed file to: $new_file_name"
echo "Successfully renamed folder to: $new_base_name"
# Exit after processing the first video file
break
fi
done
Executable → Regular
View File
File mode changed.
Loaded 100 of 118 files, more files were not shown because too many files have changed in this diff. Show more