- 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.
83 lines
2.7 KiB
PHP
83 lines
2.7 KiB
PHP
<?php
|
|
require_once(realpath(dirname(__FILE__).'/../autoload_wf.php'));
|
|
|
|
class WfTaskProductExpression extends \Workflow\Task
|
|
{
|
|
public function init() {
|
|
|
|
$this->addPreset("Condition", "condition", array(
|
|
'toModule' => 'Products',
|
|
'fromModule' => $this->getModuleName()
|
|
));
|
|
|
|
}
|
|
|
|
public function handleTask(&$context) {
|
|
/* Insert here source code to execute the task */
|
|
$products = $context->exportInventory();
|
|
$products = $products['listitems'];
|
|
|
|
$checked = new \Workflow\ConditionCheck();
|
|
$logger = \Workflow\ExecutionLogger::getCurrentInstance();
|
|
$conditions = $this->get('condition');
|
|
$expression = $this->get('expression');
|
|
$moduleFilter = $this->get('modulefilter');
|
|
if(empty($moduleFilter)) {
|
|
$moduleFilter = 'all';
|
|
}
|
|
|
|
$environment = $context->getEnvironment();
|
|
|
|
foreach($products as $product) {
|
|
$setype = \Vtiger_Functions::getCRMRecordType($product['productid']);
|
|
|
|
if(
|
|
($moduleFilter == 'Products' && $setype == 'Services') ||
|
|
($moduleFilter == 'Services' && $setype == 'Products')
|
|
) {
|
|
continue;
|
|
}
|
|
|
|
$productContext = \Workflow\VTEntity::getForId($product['productid'], $setype);
|
|
$productContext->loadEnvironment($environment);
|
|
|
|
$checked->setLogger($logger);
|
|
$return = $checked->check($conditions, $productContext);
|
|
|
|
$logger->log("Complete Result: ".intval($return));
|
|
|
|
if($return == true) {
|
|
$parser = new \Workflow\ExpressionParser($expression, $productContext, false); # Last Parameter = DEBUG
|
|
$parser->setVariable('quantity', $product['quantity']);
|
|
$parser->setVariable('unitprice', $product['unitprice']);
|
|
$parser->setVariable('discount_amount', $product['discount_amount']);
|
|
$parser->setVariable('discount_percent', $product['discount_percent']);
|
|
|
|
try {
|
|
$parser->run();
|
|
} catch(\Workflow\ExpressionException $exp) {
|
|
Workflow2::error_handler(E_EXPRESSION_ERROR, $exp->getMessage(), "", "");
|
|
}
|
|
|
|
$environment = $productContext->getEnvironment();
|
|
|
|
if($parser->getReturn() === 'stop') {
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
$context->loadEnvironment($environment);
|
|
|
|
return "yes";
|
|
}
|
|
|
|
public function beforeGetTaskform($viewer) {
|
|
/* Insert here source code to create custom configurations pages */
|
|
}
|
|
public function beforeSave(&$values) {
|
|
/* Insert here source code to modify the values the user submit on configuration */
|
|
}
|
|
}
|