display(); } function exportReport() { JRequest::setVar('layout','csvreport'); $this->display(); } function generateReceipt() { $orderId = JRequest::getVar('orderId'); ReceiptGeneratorHelper::generate($this,$orderId); JRequest::setVar('view','orderdesign'); JRequest::setVar('layout','receipt'); $this->display(); } function openCAMProject() { $orderId = JRequest::getVar('orderId'); $cadProjectS = JRequest::getVar('cadProject'); $orderIdS = JRequest::getVar('orderId'); $orders = explode(',', $orderIdS); $insoles = explode(',',$cadProjectS); for ($i=0;$i_getRealCADProjectId($insoles[$i], $orders[$i], false, $newId); $insoles[$i] = $newId; } JRequest::setVar('cadProject',implode(',',$insoles)); JRequest::setVar('orderId',implode(',',$orders)); $this->display(); } function openReviewOrder() { $orderId = JRequest::getVar('orderId'); $atId = JRequest::getVar('Id'); $this->_getRealCADProjectId($atId, $orderId, true, $newId); JRequest::setVar('Id',$newId); $this->display(); } function _getRealCADProjectId($atId, $orderId, $canCreateNew, &$newId) { $newId = $atId; return; $modelOrder =& $this->getModel('order'); $modelOrderAt =& $this->getModel('orderattribute'); $modelOrderAt->SetId($atId); $modelOrder->SetId($orderId); $preCAMAt = $modelOrder->getAttributeByTypeName('InsoleCADManProj'); if ($preCAMAt->id == 0) { if ($canCreateNew) { $modelOrderAt->DoClone(); $updateData = array(); $updateData['id'] = $modelOrderAt->GetId(); $updateData['type'] = $modelOrder->getTypeIdByName('InsoleCADManProj'); $modelOrderAt->store($updateData); $newId = $modelOrderAt->GetId(); } } else $newId = $preCAMAt->id; } function reviewedOrder() { $orderId = (int)JRequest::getVar('orderId'); $solution = trim(JRequest::getVar('error_solution')); if (!$solution) { JError::raiseNotice(0,JText::_('Empty error solution')); $this->display(); return; } $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $modelOrder->setError(null); $modelOrder->deleteAttsByType('InsoleCADManProj'); $order =& $modelOrder->getData(); $modelOrder->saveLog($order->statenameid,$solution); $this->display(); } function interviewPDF() { JRequest::setVar('layout','report'); JRequest::setVar('step',INTERVIEW_STEP); $this->gotoStep(); } function explorationPDF() { JRequest::setVar('layout','report'); JRequest::setVar('step',EXPLORATION_STEP); $this->gotoStep(); } function confirmDesignDelegate() { $orderId = (int)JRequest::getVar('orderId'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $post=array(); $post['design'] = 1; $this->saveDesign($post); if (JRequest::getVar('neveragain')=='yes') { $modelUser =& $this->getModel('user'); $modelUser->setPrivilege('Not show delegate design dialog'); } JRequest::setVar('closeWindow',true); $this->display(); } function finalizeOrder() { $orderId = (int)JRequest::getVar('orderId'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $modelOrder->setAction('SAVEDLASTSTEP'); $payment = JRequest::getVar('payment'); $orderData=array(); $orderData['id'] = $orderId; $orderData['completedSteps'] =TOTAL_STEPS; $orderData['currentStep'] =STEP_CUSTOMER; $modelOrder->store($orderData); switch($payment) { case 'paynow': $cid=array($orderId); JRequest::setVar( 'cid', $cid); JRequest::setVar( 'view', 'payment' ); JRequest::setVar( 'task', 'display' ); $this->display(); break; case 'neworder': $this->setRedirect('index.php?option=com_vxc&controller=routingorder&task=neworder'); break; case 'paylater': $this->setRedirect('index.php'); break; case 'prepay': $modelOrder->setAction('PREPAY'); $this->setRedirect('index.php'); break; case 'nextpage': $this->setRedirect("index.php?option=com_vxc&controller=routingorder&view=ordercheckout&layout=addedtocart&orderId=$orderId"); break; default: return; } } function newOrder() { JRequest::setVar( 'controller', 'routingorder'); JRequest::setVar( 'view', 'ordercustomer' ); JRequest::setVar( 'task', 'display' ); $this->display(); } function getViewFromStep($step) { switch($step) { case CUSTOMER_STEP: return 'ordercustomer'; case INTERVIEW_STEP: return 'orderinterv'; case EXPLORATION_STEP: return 'orderexploration'; case PRODUCTSEL_STEP: return 'orderproductsel'; case FEETDATA_STEP: return 'orderfeetdata'; case DESIGN_STEP: return 'orderdesign'; case MANUOPTIONS_STEP: return 'ordermanuoptions'; case CHECKOUT_STEP: return 'ordercheckout'; default: return 'ordercustomer'; } } function CheckDataForCompleteStep(&$modelOrder, &$order,&$post,&$errorMsg) { $errorMsg=''; $result = false; $noSave = (int)JRequest::getVar('noSave'); if ($noSave|| $order->readOnly) $result= true; else { switch($order->currentStep) { case CUSTOMER_STEP: $orderreference = trim($post['reference']); $customerId = (int) trim($post['id']); $customerName = trim($post['name']); $customerSurname = trim($post['surname']); if ($orderreference) $result = true; else if ($customerId) $result = true; else if ($customerName && $customerSurname) $result = true; else $errorMsg = JText::_('INVALID_CUSTOMER_STEP_MESSAGE'); break; case DESIGN_STEP: if ((int)JRequest::getVar('design')==1) $result= true; else { $result =false; foreach($order->attributes as $att) { if ($att->typename=='InsoleCADProject') { $hasLeft =((int)($att->value_left)==1); $hasRight =((int)($att->value_right)==1); if ($hasLeft || $hasRight) $result = true; } } } if (!$result) $errorMsg = JText::_('INVALID_DESIGN_STEP_MESSAGE'); break; case PRODUCTSEL_STEP: $layout = SiteOptionsHelper::getProductSelLayout(); $customMsg = ''; switch($layout) { case 'default_jjcorne': case 'default': case 'default_rotterdam': $result = true; break; case 'default_india': /*if (!$post['ShoeSizeEU'][0] || !$post['ShoeSizeEU'][1]) $customMsg = 'Please select a shoe size before continue.'; else if (!$post['IND_InsoleType']) { echo $post['ShoeSizeEU']; $customMsg = 'Please select an insole type'; } else */ $result = true; break; case 'default_jjpodo': $result= true; break; case 'default_ppr': switch($post['PPR_EinlagenVarianten']) { case 692: // 692 Individuell case 690: // 690 Prefab Standard case 691:// 691 Prefab Advanced if (!$post['PPR_Model']) $customMsg ='Wählen Sie bitte ein Model aus'; elseif (!$post['PPR_BrandsoleType']) $customMsg = 'Wählen Sie bitte ein Brandsohle aus'; elseif ($post['PPR_Model'] != 704 && !$post['PPR_InsoleCup']) //704 es senso basic $customMsg = 'Wählen Sie bitte ein Insole Cup aus'; elseif (!$post['PPR_Produkt']) $customMsg = 'Wählen Sie bitte ein Produkt aus.'; elseif (!$post['PPR_MatMono']&& !$post['PPR_MatCombi']&& !$post['PPR_MatTri']) $customMsg = 'Wählen Sie bitte ein Material aus.'; else $result = true; break; case 716: // 716 Foambox positive if (!$post['PPR_BrandsoleType']) $customMsg = 'Wählen Sie bitte ein Brandsohle aus'; elseif (!$post['PPR_InsoleCup']) $customMsg = 'Wählen Sie bitte ein Insole Cup aus'; elseif (!$post['PPR_Produkt']) $customMsg = 'Wählen Sie bitte ein Produkt aus.'; elseif (!$post['PPR_MatMono']&& !$post['PPR_MatCombi']&& !$post['PPR_MatTri']) $customMsg = 'Wählen Sie bitte ein Material aus.'; else $result = true; break; case 715: // Positive cast $result = true; break; default: $customMsg ='Wählen Sie bitte ein Einlagenvarianten aus'; } break; } if (!$result) { if ($customMsg) $errorMsg = $customMsg; else $errorMsg= JText::_('INVALID_MANUOPTIONS_STEP_MESSAGE'); } break; case MANUOPTIONS_STEP: $layout = SiteOptionsHelper::getManuOptsLayout(); $customMsg = ''; switch($layout) { case 'default_newtecnoinsole': case 'default_tecnoinsole': case 'default': $result = true; //TI_PS_InsoleFoot: 0-par 1-pie izquierdo 2-pie derecho if ($post['TI_PS_InsoleFoot']==1) { $footStart =0; $footEnd = 1; }elseif ($post['TI_PS_InsoleFoot']==2) { $footStart =1; $footEnd = 2; } else { $footStart =0; $footEnd = 2; } for ($footIndex=$footStart;$footIndex<$footEnd;$footIndex++) { $partialResult = false; if ($post['ShoeSizeEU'][$footIndex]) { switch($post['tipoinsole']) { case 'mecanizado': $partialResult = ($post['mecamat'][$footIndex]!=''); break; case 'mecanizado3caras': $partialResult = true; break; case 'positivo': $partialResult= true; break; case 'termo': switch($post['termomat'][$footIndex]) { case 'polipro': $partialResult = ($post['termopoliprothick'][$footIndex]!=''); break; case 'carbono': $partialResult= true; break; case 'resina': // $partialResult= true; $partialResult = ($post['termoresinatipo'][$footIndex]!=''); break; case 'polieti': $partialResult = ($post['termopolietithick'][$footIndex]!=''); break; } break; case '3dconfort': case 'eva'; switch($post['tipoeva'][$footIndex]) { case 'mono': if ($post['evamonothick'][$footIndex]) $partialResult=true; break; case 'bi': if ($post['tipoinsole']=='eva' || ($post['tipoinsole']=='3dconfort' && $post['evabithick'][$footIndex])) $partialResult=true; break; } break; } } else { $customMsg = JText::_('Please select a shoe size'); } if (!$partialResult) { $result =false; break; } } break; case 'default_india': $result = true; //TI_PS_InsoleFoot: 0-par 1-pie izquierdo 2-pie derecho if ($post['TI_PS_InsoleFoot']==1) { $footStart =0; $footEnd = 1; }elseif ($post['TI_PS_InsoleFoot']==2) { $footStart =1; $footEnd = 2; } else { $footStart =0; $footEnd = 2; } for ($footIndex=$footStart;$footIndex<$footEnd;$footIndex++) { $partialResult = false; if ($post['ShoeSizeEU'][$footIndex]) { if ($post['IND_InsoleType']) { if ($post['tipoinsole']=='eva') { switch($post['tipoeva'][$footIndex]) { case 'mono': if ($post['evamonothick'][$footIndex]) $partialResult=true; else $customMsg = JText::_('Please select EVA shore'); break; case 'bi': $partialResult=true; break; default: $customMsg = JText::_('Please select EVA material type'); } } } else { $customMsg = JText::_('Please select an insole type. Data has not been stored'); } } else { $customMsg = JText::_('Please select a shoe size'); } if (!$partialResult) { $result =false; break; } } break; case 'default_lafoot': if ($post['Lafoot_BasisModel']) $result = true; break; case 'default_rotterdam': $result= true; break; case 'default_jjpodo': $result=true; break; case 'default_ppr': $result = true; /* if (!$post['PPR_EinlagenVarianten']) $customMsg ='Wählen Sie bitte ein Einlagenvarianten aus'; elseif (!$post['PPR_Produkt']) $customMsg = 'Wählen Sie bitte ein Produkt aus.'; else { // Si es distinto a Leisten if ($post['PPR_Produkt']!=657) { if (!$post['PPR_MatMono']&& !$post['PPR_MatCombi']&& !$post['PPR_MatTri']) $customMsg = 'Wählen Sie bitte ein Material aus.'; else if (!$post['PPR_Versand']) $customMsg = 'Wählen Sie bitte eine Produktionsart / Versandart aus.'; else $result = true; } else $result = true; } */ break; } if (!$result) { if ($customMsg) $errorMsg = $customMsg; else $errorMsg= JText::_('INVALID_MANUOPTIONS_STEP_MESSAGE'); } break; default: $result = true; } } return $result; } function SaveStepData($currentStep,&$post,$validStep) { $orderId = (int)JRequest::getVar('orderId'); $noSave = (int)JRequest::getVar('noSave'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $order =& $modelOrder->getData(); $franchiseName = SiteOptionsHelper::getFranchiseName(); if ($currentStep == CUSTOMER_STEP && $order->id && trim(JRequest::getVar('reference')) && $order->reference != trim(JRequest::getVar('reference'))) { $dataRef = array(); $dataRef['id'] = $order->id; $dataRef['reference'] = trim(JRequest::getVar('reference')); $modelOrder->store($dataRef); } if ($noSave || $order->readOnly) return true; switch($currentStep) { case CUSTOMER_STEP: if (!$validStep) return false; $userId = LegacyHelper::getUserId(); if (!$orderId) $orderId =null; $name = trim($post['name']); $surname = trim($post['surname']); $customerId = JRequest::getVar('customerId'); $modelCustomer =& $this->getModel('customer'); $customerData = $post; $customerData['id'] = $customerId; $customerData['user'] = $userId; if (!$customerId) { if ($name && $surname) { if ($customerData['birthdate']) { $dateS = str_replace('-','/',trim($customerData['birthdate'])); $day =0; $month=0; $year=0; sscanf($dateS,"%d/%d/%d",$day,$month,$year); $dateBirth = new JDate($year.'-'.$month.'-'.$day); $customerData['birthdate'] = $dateBirth->toMySQL(); } else $customerData['birthdate'] = null; $customerData['receive_info'] = $customerData['receive_info']?1:0; $modelCustomer->store($customerData); } } $modelCustomer->SetId($customerData['id']); $customer =& $modelCustomer->getData(); $orderData = $post; $orderData['id'] = $orderId; if (!$order->user) $orderData['user'] = $userId; if ($customer->id) $orderData['customer'] = $customer->id; else $orderData['customer'] = ''; $newOrder = false; if (!$orderId) { $newOrder = true; $dateNow = new JDate(); $orderData['creationdate'] = $dateNow->toMySQL(); $order =& $modelOrder->getData(); $modelOrder->store($orderData); $modelOrder->setAction('START'); } else { $order =& $modelOrder->getData(); $modelOrder->store($orderData); } JRequest::setVar('orderId',$modelOrder->_id); $post['orderId'] = $modelOrder->_id; break; case INTERVIEW_STEP: if (!$validStep) return false; $layout = SiteOptionsHelper::getAnamnesisLayout(); $modelOrder->saveAnamnesis($post,$layout); break; case EXPLORATION_STEP: if (!$validStep) return false; $layout = SiteOptionsHelper::getExplorationLayout(); $modelOrder->saveExploration($post,$layout); break; case PRODUCTSEL_STEP: if (($franchiseName != 'ppr') && !$validStep) return false; $layout = SiteOptionsHelper::getProductSelLayout(); $modelOrder->saveProductSel($post,$layout); break; case DESIGN_STEP: if ($post['design']!==null) $this->saveDesign($post); break; case MANUOPTIONS_STEP: $layout = SiteOptionsHelper::getManuOptsLayout(); $modelOrder->saveManuOptions($post,$layout); break; } return true; } function saveDesign(&$post) { $orderId = JRequest::getVar('orderId'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $delegate = (((int)$post['design'])==1); if ($delegate) { $order =& $modelOrder->getData(); if (!$order->delegatedesign) { $modelOrder->setAction('CONFIRMDELEGATE'); //$modelOrder->DeleteAttributesByTypeName('InsoleCADProject'); } } $data = array(); $data['id'] = $orderId; $data['delegatedesign'] = ($delegate?1:0); $modelOrder->store($data); } function confirmCustomer() { switch(SiteOptionsHelper::getFranchiseName()) { case 'jjcorne': $step = PRODUCTSEL_STEP; break; default: $step = INTERVIEW_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function saveInterview() { JRequest::setVar('step',INTERVIEW_STEP); $this->gotoStep(); } function confirmInterview() { switch(SiteOptionsHelper::getFranchiseName()) { case 'tecnoinsole': case 'india': case 'velasco': $step = EXPLORATION_STEP; break; default: $step = FEETDATA_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function confirmExploration() { switch(SiteOptionsHelper::getFranchiseName()) { case 'india': case 'tecnoinsole': case 'velasco': $step = FEETDATA_STEP; break; case 'jjpodo': case 'jjcorne': case 'voxelcare': case 'ppr': case 'rotterdam': $step = PRODUCTSEL_STEP; break; default: $step = DESIGN_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function confirmProductSel() { switch(SiteOptionsHelper::getFranchiseName()) { case 'jjcorne': $step = FEETDATA_STEP; break; default: $step = DESIGN_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function confirmFeetData() { switch(SiteOptionsHelper::getFranchiseName()) { case 'jjcorne': $step = DESIGN_STEP; break; case 'india': $step = PRODUCTSEL_STEP; break; case 'tecnoinsole': case 'velasco': $step = MANUOPTIONS_STEP; break; default: $step = EXPLORATION_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function clearDesign() { $modelOrder =& $this->getModel('order'); $orderId = JRequest::getVar('orderId'); if ($orderId) { $modelOrder->SetId($orderId); $modelOrder->clearDesign(); } $this->display(); } function confirmDesign() { switch(SiteOptionsHelper::getFranchiseName()) { case 'india': case 'tecnoinsole': case 'velasco': $step = CHECKOUT_STEP; break; default: $step = MANUOPTIONS_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function confirmManuOptions() { switch(SiteOptionsHelper::getFranchiseName()) { case 'india': case 'tecnoinsole': case 'velasco': $step = DESIGN_STEP; break; default: $step = CHECKOUT_STEP; } JRequest::setVar('step',$step); $this->gotoStep(); } function saveManuOptions() { if (JRequest::getVar('deleteAddress')=='true') { $modelOrder=&$this->getModel('order'); $orderId = (int)JRequest::getVar('orderId'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $orderData = array(); $orderData['id'] = $orderId; $orderData['shipping_address'] = ''; $modelOrder->store($orderData); } JRequest::setVar('step',MANUOPTIONS_STEP); $this->gotoStep(); } function saveProductSel() { JRequest::setVar('step',PRODUCTSEL_STEP); $this->gotoStep(); } function gotoStep() { $wantedStep = (int)JRequest::getVar('step'); $orderId = (int)JRequest::getVar('orderId'); $noSave = (int)JRequest::getVar('nosave'); $modelOrder =& $this->getModel('order'); $modelOrder->SetId($orderId); $order =& $modelOrder->getData(); $order->attributes = $modelOrder->getAttributes(); $post =& JRequest::get('post'); $validStep = $this->CheckDataForCompleteStep($modelOrder,$order,$post,$errorMsg); $this->SaveStepData($order->currentStep,$post,$validStep); $orderId = (int)JRequest::getVar('orderId'); $modelOrder->SetId($orderId); $order =& $modelOrder->getData(); $completedSteps = $order->completedSteps; $currentStep = $order->currentStep; if ($validStep) { if ($wantedStep>$order->completedSteps) { $completedSteps = $wantedStep; } } else { if ($wantedStep>= $order->currentStep) { if (!$errorMsg) $errorMsg = JText::_('Please finish current step first'); JError::raise(E_NOTICE,JText::_('Warning'), $errorMsg); } if ($completedSteps < $wantedStep) { $wantedStep = $order->currentStep; } if ($order->completedSteps > $order->currentStep) { $completedSteps = $order->currentStep; $wantedStep = $order->currentStep; $modelOrder->setAction('MISSEDDATA'); } } if ($wantedStep != $order->currentStep || $completedSteps != $order->completedSteps) { $orderData = array(); $orderData['id'] = $orderId; $orderData['currentStep'] = $wantedStep; $orderData['completedSteps'] =$completedSteps; $modelOrder->store($orderData); $order =& $modelOrder->getData(); } $view = $this->getViewFromStep($order->currentStep); JRequest::setVar('step',$order->currentStep); JRequest::setVar('orderId',$order->id); JRequest::setVar('view',$view); JRequest::setVar('task','display'); $this->display(); } function deleteOrderAttribute() { $atId = JRequest::getVar('atId'); $modelOrderAttribute =& $this->getModel('orderattribute'); $modelOrderAttribute->Delete($atId); $this->display(); } function selectCustomer() { JRequest::setVar('view', 'ordercustomer'); JRequest::setVar('task', 'display'); JRequest::setVar('layout', 'default'); $this->display(); } function display() { $userId = LegacyHelper::getUserId(); if (JRequest::getVar('debugPlugin')!='1'&& !$userId) $this->setRedirect(JRoute::_('index.php?option=com_comprofiler&task=login'),JText::_('SESSION_EXPIRED_MESSAGE')); $document =& JFactory::getDocument(); $viewType = $document->getType(); $viewName = JRequest::getCmd( 'view', $this->getName() ); $view = & $this->getView( $viewName, $viewType, '', array( 'base_path'=>$this->_basePath)); $modelOrder =& $this->getModel('order'); $modelOrders =& $this->getModel('orders'); $modelCustomer = & $this->getModel('customer'); $modelCustomers = & $this->getModel('customers'); $modelAttributeType = & $this->getModel('atttype'); $modelAttributeTypes = & $this->getModel('atttypes'); $modelVoxelService =& $this->getModel('voxelService'); $modelOrderAttribute =& $this->getModel('orderattribute'); $modelResource =& $this->getModel('resource'); $modelMilQueue =& $this->getModel('millqueue'); $modelPendingOrders =& $this->getModel('pendingorders'); $modelCurrentBatch =&$this->getModel('currentbatch'); $modelBatchStates =& $this->getModel('batchstates'); $modelOrderLog =& $this->getModel('orderlog'); $modelOrderLogs =& $this->getModel('orderlogs'); $modelUser =& $this->getModel('user'); $modelBatch =& $this->getModel('batch'); $modelAgency =& $this->getModel('agency'); $modelAgencies =& $this->getModel('agencies'); $modelTitles =& $this->getModel('titles'); $modelReceipt =& $this->getModel('receipt'); $modelUserPrefabModel =& $this->getModel('userprefabmodel'); $modelUserAddress =& $this->getModel('useraddress'); $modelSettings =& $this->getModel('settings'); $view->setModel($modelSettings); $view->setModel($modelUserAddress); $view->setModel($modelAgency); $view->setModel($modelAgencies); $view->setModel($modelBatch); $view->setModel($modelUser); $view->setModel($modelOrderLog); $view->setModel($modelOrderLogs); $view->setModel($modelBatchStates); $view->setModel($modelCurrentBatch); $view->setModel($modelPendingOrders); $view->setModel($modelOrder); $view->setModel($modelCustomer); $view->setModel($modelCustomers); $view->setModel($modelAttributeType); $view->setModel($modelAttributeTypes); $view->setModel($modelVoxelService); $view->setModel($modelOrderAttribute); $view->setModel($modelResource); $view->setModel($modelOrders); $view->setModel($modelMilQueue); $view->setModel($modelTitles); $view->setModel($modelReceipt); $view->setModel($modelUserPrefabModel); parent::display(); } } ?>