PHP code example of azaharizaman / nexus-procurement-operations
1. Go to this page and download the library: Download azaharizaman/nexus-procurement-operations library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
azaharizaman / nexus-procurement-operations example snippets
use Nexus\ProcurementOperations\Coordinators\RequisitionCoordinator;
use Nexus\ProcurementOperations\DTOs\CreateRequisitionRequest;
$coordinator = $container->get(RequisitionCoordinator::class);
$result = $coordinator->create(new CreateRequisitionRequest(
tenantId: 'tenant-123',
requestedBy: 'user-456',
departmentId: 'dept-789',
lineItems: [
[
'productId' => 'prod-001',
'description' => 'Office Supplies',
'quantity' => 100,
'estimatedUnitPriceCents' => 1500,
'uom' => 'EA',
],
],
justification: 'Monthly office supplies replenishment',
));
if ($result->success) {
echo "Requisition created: {$result->requisitionId}";
}
use Nexus\ProcurementOperations\Coordinators\InvoiceMatchingCoordinator;
use Nexus\ProcurementOperations\DTOs\MatchInvoiceRequest;
$coordinator = $container->get(InvoiceMatchingCoordinator::class);
$result = $coordinator->match(new MatchInvoiceRequest(
tenantId: 'tenant-123',
vendorBillId: 'bill-001',
purchaseOrderId: 'po-001',
goodsReceiptIds: ['gr-001', 'gr-002'],
performedBy: 'user-456',
));
if ($result->matched) {
echo "Invoice matched successfully!";
} else {
echo "Match failed: {$result->failureReason}";
print_r($result->variances);
}
use Nexus\ProcurementOperations\Coordinators\PaymentProcessingCoordinator;
use Nexus\ProcurementOperations\DTOs\Financial\ProcessPaymentRequest;
$coordinator = $container->get(PaymentProcessingCoordinator::class);
$result = $coordinator->process(new ProcessPaymentRequest(
tenantId: 'tenant-123',
vendorBillIds: ['bill-001', 'bill-002'],
paymentMethod: 'ACH',
bankAccountId: 'bank-001',
scheduledDate: new \DateTimeImmutable('+3 days'),
processedBy: 'user-456',
captureEarlyPaymentDiscount: true,
));
if ($result->success) {
echo "Payment scheduled: {$result->paymentReference}";
echo "Discount captured: {$result->discountCaptured->format()}";
}
use Nexus\ProcurementOperations\Coordinators\SoxComplianceCoordinator;
use Nexus\ProcurementOperations\DTOs\Sox\SoxComplianceRequest;
$coordinator = $container->get(SoxComplianceCoordinator::class);
$result = $coordinator->validateCompliance(new SoxComplianceRequest(
tenantId: 'tenant-123',
period: '2024-Q4',
controlAreas: ['PROCUREMENT', 'PAYMENTS', 'VENDOR_MANAGEMENT'],
use Nexus\ProcurementOperations\Workflows\VendorOnboardingWorkflow;
use Nexus\ProcurementOperations\DTOs\Vendor\VendorOnboardingRequest;
$workflow = $container->get(VendorOnboardingWorkflow::class);
$result = $workflow->start(new VendorOnboardingRequest(
tenantId: 'tenant-123',
vendorName: 'Acme Supplies Ltd',
registrationNumber: 'REG-12345',
taxId: 'TAX-67890',
primaryContact: [
'name' => 'John Smith',
'email' => '[email protected]',
'phone' => '+1-555-0100',
],
bankDetails: [
'bankName' => 'First National Bank',
'accountNumber' => '****1234',
'routingNumber' => '021000021',
],
complianceCertifications: ['ISO9001', 'SOC2'],
));
echo "Onboarding workflow started: {$result->workflowId}";
echo "Status: {$result->status->value}"; // PENDING_VERIFICATION
use Nexus\ProcurementOperations\Coordinators\SpendAnalyticsCoordinator;
use Nexus\ProcurementOperations\DTOs\SpendPolicy\SpendAnalysisRequest;
$coordinator = $container->get(SpendAnalyticsCoordinator::class);
$result = $coordinator->analyze(new SpendAnalysisRequest(
tenantId: 'tenant-123',
periodStart: new \DateTimeImmutable('2024-01-01'),
periodEnd: new \DateTimeImmutable('2024-12-31'),
dimensions: ['category', 'vendor', 'department'],
use Nexus\ProcurementOperations\Services\SharedServicesCenter;
use Nexus\ProcurementOperations\DTOs\MultiEntity\SharedProcurementRequest;
$sharedServices = $container->get(SharedServicesCenter::class);
$result = $sharedServices->processRequest(new SharedProcurementRequest(
requestingEntityId: 'entity-001',
serviceType: 'PROCUREMENT',
items: [
['productId' => 'prod-001', 'quantity' => 1000],
],
deliveryEntities: ['entity-001', 'entity-002'],
));
echo "Shared request ID: {$result->requestId}";
echo "Allocated to entities: " . implode(', ', $result->allocations);
use Nexus\ProcurementOperations\Services\ControlTestingService;
use Nexus\ProcurementOperations\DTOs\Sox\ControlTestRequest;
$testingService = $container->get(ControlTestingService::class);
$result = $testingService->executeTest(new ControlTestRequest(
tenantId: 'tenant-123',
controlId: 'CTRL-PR-001',
testingPeriod: '2024-Q4',
sampleSize: 25, // PCAOB standard
testProcedures: ['vouching', 'recalculation', 'observation'],
));
if ($result->isEffective) {
echo "Control is operating effectively";
echo "Exceptions: {$result->exceptionCount}/{$result->sampleSize}";
} else {
echo "Control deficiency detected: {$result->deficiencyType}";
}
use Nexus\ProcurementOperations\Services\Sox404EvidenceService;
use Nexus\ProcurementOperations\DTOs\Sox\EvidencePackageRequest;
$evidenceService = $container->get(Sox404EvidenceService::class);
$package = $evidenceService->generatePackage(new EvidencePackageRequest(
tenantId: 'tenant-123',
auditPeriod: '2024',
controlAreas: ['ALL'],
format: 'PDF',
));
echo "Evidence package generated: {$package->packageId}";
echo "Total documents: {$package->documentCount}";
echo "Ready for external audit: " . ($package->isComplete ? 'Yes' : 'No');
use Nexus\ProcurementOperations\Rules\SegregationOfDutiesRule;
use Nexus\ProcurementOperations\DTOs\Sox\SodCheckRequest;
$sodRule = $container->get(SegregationOfDutiesRule::class);
$result = $sodRule->validate(new SodCheckRequest(
userId: 'user-123',
action: 'APPROVE_PAYMENT',
relatedActions: [
['action' => 'CREATE_INVOICE', 'performedBy' => 'user-123'],
],
));
if (!$result->passed) {
throw new SodViolationException($result->conflictDetails);
}
use Nexus\ProcurementOperations\Services\DocumentRetentionService;
use Nexus\ProcurementOperations\DTOs\Audit\LegalHoldRequest;
$retentionService = $container->get(DocumentRetentionService::class);
// Place documents on legal hold
$holdResult = $retentionService->placeLegalHold(new LegalHoldRequest(
tenantId: 'tenant-123',
matterReference: 'Litigation #2024-001',
documentTypes: ['VENDOR_CONTRACTS', 'PURCHASE_ORDERS'],
vendorIds: ['vendor-456'],
initiatedBy: 'legal-counsel',
reason: 'Ongoing vendor dispute litigation',
));
echo "Legal hold placed: {$holdResult->holdId}";
echo "Documents affected: {$holdResult->documentCount}";
use Nexus\ProcurementOperations\Services\Approval\ApprovalLimitsManager;
use Nexus\ProcurementOperations\DTOs\ApprovalLimitCheckRequest;
$manager = $container->get(ApprovalLimitsManager::class);
// Check if user can approve a requisition
$result = $manager->checkApprovalLimit(new ApprovalLimitCheckRequest(
tenantId: 'tenant-123',
approverId: 'user-456',
documentType: 'requisition',
amountCents: 500000, // $5,000
currency: 'USD',
));
if ($result->canApprove) {
echo "User authorized to approve";
echo "Authority level: {$result->authorityLevel}";
} else {
echo "Approval limit exceeded: {$result->reason}";
}
// Get user's approval authority
$authority = $manager->getApprovalAuthority('tenant-123', 'user-456');
echo "Max requisition: {$authority->getMaxAmountForType('requisition')} cents";
use Nexus\ProcurementOperations\Services\Compliance\DocumentRetentionService;
$service = $container->get(DocumentRetentionService::class);
// Apply retention policy to a document
$result = $service->applyRetentionPolicy(
tenantId: 'tenant-123',
documentId: 'doc-001',
documentType: 'purchase_order',
createdDate: new \DateTimeImmutable('2024-01-15'),
);
echo "Retention expires: {$result['expiresAt']->format('Y-m-d')}";
// Check disposal eligibility (respects legal holds)
$eligibility = $service->checkDisposalEligibility(
tenantId: 'tenant-123',
documentId: 'doc-001',
);
if ($eligibility['eligible']) {
echo "Document can be disposed";
} else {
echo "Blocked: {$eligibility['reason']}";
// e.g., "Document is under legal hold: LH-2024-001"
}
// Apply legal hold
$service->applyLegalHold(
tenantId: 'tenant-123',
legalHoldId: 'LH-2024-002',
documentIds: ['doc-001', 'doc-002', 'doc-003'],
reason: 'Pending litigation - Jones v. Acme Corp',
);
use Nexus\ProcurementOperations\Services\Compliance\ProcurementAuditService;
$service = $container->get(ProcurementAuditService::class);
// Generate SOX 404 evidence package
$evidence = $service->generateSox404EvidencePackage(
tenantId: 'tenant-123',
periodStart: new \DateTimeImmutable('2024-01-01'),
periodEnd: new \DateTimeImmutable('2024-12-31'),
);
echo "Control areas covered: " . implode(', ', $evidence['controlAreas']);
echo "Evidence items: {$evidence['evidenceCount']}";
echo "Compliant: " . ($evidence['overallCompliant'] ? 'Yes' : 'No');
// Get Segregation of Duties report
$sodReport = $service->getSegregationOfDutiesReport('tenant-123');
foreach ($sodReport['conflictGroups'] as $group) {
echo "Users with conflicts in {$group['conflictType']}: ";
echo implode(', ', $group['users']);
}
// Perform control test
$testResult = $service->performControlTest(
tenantId: 'tenant-123',
controlId: 'CTRL-PR-001',
sampleSize: 25,
testProcedures: ['vouching', 'recalculation'],
);
echo "Control effective: " . ($testResult['isEffective'] ? 'Yes' : 'No');
echo "Exceptions found: {$testResult['exceptionsFound']}";