%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/exchange/onec/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/modules/sale/lib/exchange/onec/converterdocumentpayment.php |
<?php namespace Bitrix\Sale\Exchange\OneC; use Bitrix\Main\ArgumentException; use Bitrix\Sale\Exchange\ISettings; use Bitrix\Sale\Exchange\ISettingsExport; use Bitrix\Sale\Exchange\ISettingsImport; use Bitrix\Sale\Payment; /** * Class ConverterDocumentPayment * @package Bitrix\Sale\Exchange\OneC * @deprecated */ class ConverterDocumentPayment extends Converter { /** * @return array */ protected function getFieldsInfo() { return PaymentDocument::getFieldsInfo(); } /** * @param $documentImport * @return array * @throws ArgumentException */ public function resolveParams($documentImport) { if(!($documentImport instanceof DocumentBase)) throw new ArgumentException("Document must be instanceof DocumentBase"); $result = array(); $params = $documentImport->getFieldValues(); $availableFields = array_merge(Payment::getAvailableFields(), array('CASH_BOX_CHECKS')); /** TODO: huck */ rsort($availableFields); foreach ($availableFields as $k) { switch($k) { case 'ID_1C': case 'VERSION_1C': if(isset($params[$k])) $fields[$k] = $params[$k]; break; case 'SUM': if(isset($params['AMOUNT'])) $fields[$k] = $params['AMOUNT']; break; case 'COMMENTS': if(isset($params['COMMENT'])) $fields[$k] = $params['COMMENT']; break; case 'PAY_VOUCHER_DATE': if(isset($params['REK_VALUES']['1C_PAYED_DATE'])) $fields[$k] = $params['REK_VALUES']['1C_PAYED_DATE']; break; case 'PAY_VOUCHER_NUM': if(isset($params['REK_VALUES']['1C_PAYED_NUM'])) $fields[$k] = $params['REK_VALUES']['1C_PAYED_NUM']; break; case 'PAID': $payed=''; $cancel=''; if(isset($params['REK_VALUES']['1C_PAYED'])) $payed = $params['REK_VALUES']['1C_PAYED']; if(isset($params['REK_VALUES']['CANCEL'])) $cancel = $params['REK_VALUES']['CANCEL']; if($payed == 'Y') $fields[$k] = 'Y'; elseif($cancel == 'Y') $fields[$k] = 'N'; break; case 'IS_RETURN': if(isset($params['REK_VALUES']['1C_RETURN'])) { $value = $params['REK_VALUES']['1C_RETURN']; if($value == 'Y') $fields[$k] = 'Y'; } break; case 'PAY_RETURN_COMMENT': if(isset($params['REK_VALUES']['1C_RETURN_REASON'])) $fields[$k] = $params['REK_VALUES']['1C_RETURN_REASON']; break; case 'PAY_SYSTEM_ID': $paySystemId = 0; if(isset($params['REK_VALUES']['PAY_SYSTEM_ID'])) { $paySystemId = $params['REK_VALUES']['PAY_SYSTEM_ID']; } if($paySystemId<=0) { if(isset($params['REK_VALUES']['PAY_SYSTEM_ID_DEFAULT'])) { $paySystemId = $params['REK_VALUES']['PAY_SYSTEM_ID_DEFAULT']; } } /** @var ImportSettings $settings */ $settings = $this->getSettings(); if($paySystemId<=0) { $paySystemId = $settings->paySystemIdFor($this->getEntityTypeId()); } if($paySystemId<=0) { $paySystemId = $settings->paySystemIdDefaultFor($this->getEntityTypeId()); } $fields[$k] = $paySystemId; break; case 'CASH_BOX_CHECKS': if(is_array($params[$k])) { foreach($params[$k] as $property=>$value) { switch($property) { case 'ID': $cashBoxChecks[$property] = $value; break; case 'CASHBOX_URL': $cashBoxChecks['LINK_PARAMS']['URL'] = $value; break; case 'CASHBOX_FISCAL_SIGN': $cashBoxChecks['LINK_PARAMS']['FISCAL_SIGN'] = $value; break; case 'CASHBOX_REG_NUMBER_KKT': $cashBoxChecks['LINK_PARAMS']['REG_NUMBER_KKT'] = $value; } } } break; } } $result['TRAITS'] = isset($fields)? $fields:array(); $result['CASH_BOX_CHECKS'] = isset($cashBoxChecks)? $cashBoxChecks:array(); return $result; } /** * @param Payment|null $payment * @param array $fields */ static public function sanitizeFields($payment=null, array &$fields, ISettings $settings) { if(!empty($payment) && !($payment instanceof Payment)) throw new ArgumentException("Entity must be instanceof Payment"); foreach($fields as $k=>$v) { switch($k) { case 'AMOUNT': if(!empty($payment) && $payment->isPaid()) { unset($fields['SUM']); } break; case 'PAY_SYSTEM_ID': if(!empty($payment)) { unset($fields['PAY_SYSTEM_ID']); } break; } } if(empty($payment)) { /** @var ISettingsImport $settings */ $fields['CURRENCY'] = $settings->getCurrency(); } unset($fields['ID']); } public function externalize(array $fields) { $result = array(); $traits = $fields['TRAITS']; $businessValue = $fields['BUSINESS_VALUE']; $checks = $fields['CASH_BOX_CHECKS']; $availableFields = $this->getFieldsInfo(); /** @var ISettingsExport $settings */ $settings = $this->getSettings(); foreach ($availableFields as $k=>$v) { $value=''; switch ($k) { case 'ID': $value = ($traits['ID_1C']<>'' ? $traits['ID_1C']:$traits['ID']); break; case 'NUMBER': $value = $traits['ID']; break; case 'DATE': $value = $traits['DATE_BILL']; break; case 'OPERATION': $value = DocumentBase::resolveDocumentTypeName($this->getDocmentTypeId()); break; case 'ROLE': $value = DocumentBase::getLangByCodeField('SELLER'); break; case 'CURRENCY': $replaceCurrency = $settings->getReplaceCurrency(); $value = substr($replaceCurrency<>'' ? $replaceCurrency:$traits[$k], 0, 3); break; case 'CURRENCY_RATE': $value = self::CURRENCY_RATE_DEFAULT; break; case 'AMOUNT': $value = $traits['SUM']; break; case 'VERSION': $value = $traits['VERSION']; break; case 'NUMBER_BASE':// ????? $value = $traits['ORDER_ID']; break; case 'TIME': $value = $traits['DATE_BILL']; break; case 'COMMENT': $value = $traits['COMMENTS']; break; case 'CASH_BOX_CHECKS': if(count($checks)>0) { $value = $this->externalizeCashBoxChecksFields(current($checks), $v); } break; case 'REK_VALUES': $value=array(); foreach($v['FIELDS'] as $name=>$fieldInfo) { $valueRV=''; switch($name) { case '1C_PAYED_DATE': $valueRV = $traits['DATE_PAID']; break; case 'CANCEL': $valueRV = 'N'; break; case 'PAY_SYSTEM_ID': $valueRV = $traits['PAY_SYSTEM_ID']; break; case 'PAY_SYSTEM': $valueRV = $traits['PAY_SYSTEM_NAME']; break; case 'PAY_PAID': $valueRV = $traits['PAID']; break; case 'PAY_RETURN': $valueRV = $traits['IS_RETURN']; break; case 'PAY_RETURN_REASON': $valueRV = $traits['PAY_RETURN_COMMENT']; break; case 'SITE_NAME': $valueRV = '['.$traits['LID'].'] '.static::getSiteNameByLid($traits['LID']); break; case 'REKV': $value = array_merge($value, $this->externalizeRekv($businessValue[$name], $fieldInfo)); break; } if(!in_array($name, array('REKV'))) { $value[] = $this->externalizeRekvValue($name, $valueRV, $fieldInfo); } } break; } if(!in_array($k, array('REK_VALUES', 'CASH_BOX_CHECKS'))) { $this->externalizeField($value, $v); } $result[$k] = $value; } $result = $this->modifyTrim($result); return $result; } /** * @param $fields * @param array $fieldsInfo * @return array */ protected function externalizeCashBoxChecksFields($fields, array $fieldsInfo) { $result = array(); foreach($fieldsInfo['FIELDS'] as $name=>$fieldInfo) { $value=''; switch($name) { case 'ID': $value = $fields['ID']; $this->externalizeField($value, $fieldInfo); $result[$name] = $value; break; case 'PROP_VALUES': foreach ($fieldInfo['FIELDS'] as $nameProp=>$fieldInfoProp) { switch ($nameProp) { case 'ID': $value = 'PRINT_CHECK'; break; case 'VALUE': $value = 'Y'; break; } $this->externalizeField($value, $fieldInfoProp); $result[$name][$nameProp] = $value; } break; } } return $result; } }