Clay-UI

 view release on metacpan or  search on metacpan

MANIFEST.SKIP  view on Meta::CPAN

\bBuild$
\b_build/
\bBuild.bat$
\bBuild.COM$
\bBUILD.COM$
\bbuild.com$

# and Module::Build::Tiny generated files
\b_build_params$

# Avoid temp and backup files.
~$
\.old$
\#$
\b\.#
\.bak$
\.tmp$
\.#
\.rej$
\..*\.sw.?$

examples/16-invoice-pdf.pl  view on Meta::CPAN


# Deterministic line items for the service period, September 2026
# (calendar weeks 36 to 40). Monthly services come first, billed once
# for the month; the other services are billed per week. Within a week
# the services rotate, a week has at most one item of each daily service,
# and every hourly item names its own ticket, so no week lists the same
# item twice. Some items carry a long detail text
# that wraps over several lines.
sub generate_items ($count) {
	my @monthly_services = (
		[ 'Managed database', 24_900, 'PostgreSQL cluster with daily backups, point-in-time recovery and around-the-clock monitoring.' ],
		[ 'Support retainer', 45_000, undef ],
	);
	my @weekly_services = (
		[ 'Backend development',  'hours',   9_500, 'API endpoints for the order import, including validation of partner payloads and retry handling for failed deliveries.' ],
		[ 'Frontend development', 'hours',   8_800, undef ],
		[ 'Code review',          'hours',   7_500, 'Review of pull requests for the reporting module.' ],
		[ 'Project management',   'hours',   7_000, undef ],
		[ 'UX workshop',          'days',  120_000, 'Remote workshop with stakeholders, including preparation, moderation and a written summary of all decisions taken.' ],
		[ 'Security audit',       'days',  135_000, 'Dependency audit and penetration test of the customer portal; findings delivered as a prioritised report.' ],
	);



( run in 1.620 second using v1.01-cache-2.11-cpan-3f962061493 )