Files
crm.clientright.ru/modules/SalesOrder/SalesOrderPDFController.php
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

160 lines
6.3 KiB
PHP

<?php
/*+**********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
************************************************************************************/
include_once 'include/InventoryPDFController.php';
include_once dirname(__FILE__). '/SalesOrderPDFHeaderViewer.php';
class Vtiger_SalesOrderPDFController extends Vtiger_InventoryPDFController{
function buildHeaderModelTitle() {
$singularModuleNameKey = 'SINGLE_'.$this->moduleName;
$translatedSingularModuleLabel = getTranslatedString($singularModuleNameKey, $this->moduleName);
if($translatedSingularModuleLabel == $singularModuleNameKey) {
$translatedSingularModuleLabel = getTranslatedString($this->moduleName, $this->moduleName);
}
return sprintf("%s: %s", $translatedSingularModuleLabel, $this->focusColumnValue('salesorder_no'));
}
function getHeaderViewer() {
$headerViewer = new SalesOrderPDFHeaderViewer();
$headerViewer->setModel($this->buildHeaderModel());
return $headerViewer;
}
function buildHeaderModelColumnLeft() {
$modelColumnLeft = parent::buildHeaderModelColumnLeft();
return $modelColumnLeft;
}
function buildHeaderModelColumnCenter() {
$subject = $this->focusColumnValue('subject');
$customerName = $this->resolveReferenceLabel($this->focusColumnValue('account_id'), 'Accounts');
$contactName = $this->resolveReferenceLabel($this->focusColumnValue('contact_id'), 'Contacts');
$purchaseOrder = $this->focusColumnValue('vtiger_purchaseorder');
$quoteName = $this->resolveReferenceLabel($this->focusColumnValue('quote_id'), 'Quotes');
$subjectLabel = getTranslatedString('Subject', $this->moduleName);
$quoteNameLabel = getTranslatedString('Quote Name', $this->moduleName);
$customerNameLabel = getTranslatedString('Customer Name', $this->moduleName);
$contactNameLabel = getTranslatedString('Contact Name', $this->moduleName);
$purchaseOrderLabel = getTranslatedString('Purchase Order', $this->moduleName);
$modelColumn1 = array(
$subjectLabel => $subject,
$customerNameLabel => $customerName,
$contactNameLabel => $contactName,
$purchaseOrderLabel => $purchaseOrder,
$quoteNameLabel => $quoteName
);
return $modelColumn1;
}
function buildHeaderModelColumnRight() {
$issueDateLabel = getTranslatedString('Issued Date', $this->moduleName);
$validDateLabel = getTranslatedString('Due Date', $this->moduleName);
$billingAddressLabel = getTranslatedString('Billing Address', $this->moduleName);
$shippingAddressLabel = getTranslatedString('Shipping Address', $this->moduleName);
$modelColumn2 = array(
'dates' => array(
$issueDateLabel => $this->formatDate(date("Y-m-d")),
$validDateLabel => $this->formatDate($this->focusColumnValue('duedate')),
),
$billingAddressLabel => $this->buildHeaderBillingAddress(),
$shippingAddressLabel => $this->buildHeaderShippingAddress()
);
return $modelColumn2;
}
function getWatermarkContent() {
return $this->focusColumnValue('sostatus');
}
}
//SalesPlatform.ru begin SPPDFController - create by user template
include_once 'includes/SalesPlatform/PDF/ProductListPDFController.php';
require_once 'modules/Quotes/Quotes.php';
require_once 'modules/Potentials/Potentials.php';
require_once 'modules/Accounts/Accounts.php';
class SalesPlatform_SalesOrderPDFController extends SalesPlatform_PDF_ProductListDocumentPDFController{
function buildDocumentModel() {
global $app_strings;
try {
$model = parent::buildDocumentModel();
$this->generateEntityModel($this->focus, 'SalesOrder', 'salesorder_', $model);
//SalesPaltform.ru begin
$entity = CRMEntity::getInstance('Potentials');
//$entity = new Potentials();
//SalesPaltform.ru end
if ($this->focusColumnValue('potential_id')) {
$entity->retrieve_entity_info($this->focusColumnValue('potential_id'), 'Potentials');
}
$this->generateEntityModel($entity, 'Potentials', 'potential_', $model);
//SalesPaltform.ru begin
$entity = CRMEntity::getInstance('Quotes');
//$entity = new Quotes();
//SalesPaltform.ru end
if ($this->focusColumnValue('quote_id')) {
$entity->retrieve_entity_info($this->focusColumnValue('quote_id'), 'Quotes');
}
$this->generateEntityModel($entity, 'Quotes', 'quote_', $model);
//SalesPaltform.ru begin
$entity = CRMEntity::getInstance('Contacts');
//$entity = new Contacts();
//SalesPlatform.ru end
if ($this->focusColumnValue('contact_id')) {
$entity->retrieve_entity_info($this->focusColumnValue('contact_id'), 'Contacts');
}
$this->generateEntityModel($entity, 'Contacts', 'contact_', $model);
//SalesPaltform.ru begin
$entity = CRMEntity::getInstance('Accounts');
//$entity = new Accounts();
//SalesPlatform.ru end
if ($this->focusColumnValue('account_id')) {
$entity->retrieve_entity_info($this->focusColumnValue('account_id'), 'Accounts');
}
$this->generateEntityModel($entity, 'Accounts', 'account_', $model);
$this->generateUi10Models($model);
$this->generateRelatedListModels($model);
$model->set('salesorder_no', $this->focusColumnValue('salesorder_no'));
return $model;
} catch (Exception $e) {
echo '<meta charset="utf-8" />';
if($e->getMessage() == $app_strings['LBL_RECORD_DELETE']) {
echo $app_strings['LBL_RECORD_INCORRECT'];
echo '<br><br>';
} else {
echo $e->getMessage();
echo '<br><br>';
}
return null;
}
}
function getWatermarkContent() {
return '';
}
}
//SalesPlatform.ru end
?>