s2doservice.php /// Art: Online Auftragsverwaltung /// Inhalt: Webservice für die Auftragsverwaltung /// Beschreibung: Serverkommunikation für die Auftragsverwaltung für Kunden, Aufträge, Vorlagen und Emails /// Benötigt: Alle, siehe init /// CCML-Parsing: notwendig /// ////////////////////////////////////////////////////////////////////////////////////////// /// /// Letzte Änderungen: /// 07.12.2008 Suchfunktion umgestellt /// 30.01.2009 Minorbug Auftrag löschen /// 24.04.2009 Korrektur MwSt. /// 22.09.2009 split -> explode /// 24.01.2010 Payment Kosten und Rabatte eingebaut /// 25.03.2010 Rechnungserstellung bei Statuswechsel /// 27.03.2010 Manuelle Rechnungserstellung /// 02.08.2010 Bug Statusemail PDF /// ////////////////////////////////////////////////////////////////////////////////////////// ///<07.08.2010/7.0.1.9/> define('ROOT', './'); define('ASSETS', ROOT.'assets/'); require(ASSETS.'s2diconf.php'); require(CC_INCLUDE_INIT); require(CC_BLOGIC_CONFIG); if (!$session->is_shopadmin()) die(); //////////////////////////////////////////////////////////////////////////// function str2num($n) { $n = str_replace(CC_SITE_THOUSANDSOPERATOR, '', $n); $n = str_replace(CC_SITE_DECIMALSEPARATOR, '.', $n); return $n; } //////////////////////////////////////////////////////////////////////////// Mehrfach benutzte Funktionen // Einen einzelnen Auftrag holen function get_order() { $order_id = post(PARAMETER_ID, CHECK_NUM); $order = new order($order_id); $response[] = 'order_paymentcaption='.rawurlencode($order->payment_caption); $response[] = 'order_paymentamount='.rawurlencode(format::cleanprice($order->payment_amount)); $response[] = 'order_paymentabsolute='.rawurlencode($order->payment_absolute); $response[] = 'order_paymentrebateamount='.rawurlencode(format::cleanprice($order->paymentrebate_amount)); $response[] = 'order_paymentrebateabsolute='.rawurlencode($order->paymentrebate_absolute); $response[] = 'order_paymentvat='.rawurlencode(format::cleanprice($order->payment_vat)); $response[] = 'order_shippingcaption='.rawurlencode($order->shipping_caption); $response[] = 'order_shippingcost='.rawurlencode(format::cleanprice($order->shipping_cost)); $response[] = 'order_shippingvat='.rawurlencode(format::cleanprice($order->shipping_vat)); $response[] = 'order_trackingid='.rawurlencode($order->tracking_id); $response[] = 'label_weight='.rawurlencode(format::weight($order->get_weight())); $response[] = 'client_bankaccountholder='.rawurlencode($order->client->bank_accountholder); $response[] = 'client_bankaccountnumber='.rawurlencode($order->client->bank_accountnumber); $response[] = 'client_bankcode='.rawurlencode($order->client->bank_code); $response[] = 'client_bankname='.rawurlencode($order->client->bank_name); $response[] = 'client_creditaccountholder='.rawurlencode($order->client->credit_accountholder); $response[] = 'client_creditaccountnumber='.rawurlencode($order->client->credit_accountnumber); $response[] = 'client_creditvaliduntil='.rawurlencode($order->client->credit_validuntil); $response[] = 'client_creditcvc='.rawurlencode($order->client->credit_cvc); $response[] = 'order_sumrebateamount='.rawurlencode(format::cleanprice($order->sumrebate_amount)); $response[] = 'order_sumrebateabsolute='.rawurlencode($order->sumrebate_absolute); $response[] = 'order_couponrebateamount='.rawurlencode(format::cleanprice($order->couponrebate_amount)); $response[] = 'order_couponrebateabsolute='.rawurlencode($order->couponrebate_absolute); $response[] = 'client_rebateamount='.rawurlencode(format::cleanprice($order->client->rebate_amount)); $response[] = 'client_rebateabsolute='.rawurlencode($order->client->rebate_absolute); $response[] = 'client_salutation='.rawurlencode($order->client->salutation); $response[] = 'client_firstname='.rawurlencode($order->client->firstname); $response[] = 'client_lastname='.rawurlencode($order->client->lastname); $response[] = 'client_company='.rawurlencode($order->client->company); $response[] = 'client_street='.rawurlencode($order->client->street); $response[] = 'client_streetnumber='.rawurlencode($order->client->streetnumber); $response[] = 'client_zip='.rawurlencode($order->client->zip); $response[] = 'client_city='.rawurlencode($order->client->city); $response[] = 'client_country='.rawurlencode(substr($order->client->country, 11)); $response[] = 'client_phone='.rawurlencode($order->client->phone); $response[] = 'client_cellphone='.rawurlencode($order->client->cellphone); $response[] = 'client_fax='.rawurlencode($order->client->fax); $response[] = 'client_custom1='.rawurlencode($order->client->custom1); $response[] = 'client_custom2='.rawurlencode($order->client->custom2); $response[] = 'client_custom3='.rawurlencode($order->client->custom3); $response[] = 'client_custom4='.rawurlencode($order->client->custom4); $response[] = 'client_custom5='.rawurlencode($order->client->custom5); $response[] = 'client_message='.rawurlencode($order->client->message); $response[] = 'order_message='.rawurlencode($order->message); $response[] = 'label_clientid='.rawurlencode($order->client->client_id); $response[] = 'order_status='.rawurlencode($order->status); $response[] = 'label_email='.rawurlencode($order->client->email); $response[] = 'label_orderid='.rawurlencode($order->order_id_prefix.$order->order_id); $response[] = 'label_orderdate='.rawurlencode(date(CC_SITE_DATEFORMAT, strtotime($order->order_date)).' '.$order->order_time); $response[] = 'label_billid='.rawurlencode($order->bill_id_prefix.$order->bill_id); $response[] = 'label_billdate='.rawurlencode($order->bill_date ? date(CC_SITE_DATEFORMAT, strtotime($order->bill_date)) : ''); include_once(CC_BLOGIC_PDFDOC); $pdfdoc = new pdfdoc(CC_SITE_FILEKEY, DOCS, $order); if ($order->bill_id && !CC_SITE_BILLHASLEFTTHEBUILDING) { $bill_exists = true; $pdfdoc->verify($pdfdoc->MODE_BILL); $response[] = 'href_billpdflink=' . rawurlencode(CC_URL_OSPDF . '?' . PARAMETER_MODE . '=showbill&' . PARAMETER_ORDER . '=' . $order->order_id); $response[] = 'label_billpdflink=' . rawurlencode($pdfdoc->name($pdfdoc->MODE_BILL)); } else $response[] = 'label_billpdflink='; if ($order->pdf_creation != PDF_CREATION_ONORDER && !CC_SITE_BILLHASLEFTTHEBUILDING) { $pdfdoc->verify($pdfdoc->MODE_CONFIRMATION); $response[] = 'href_orderpdflink=' . rawurlencode(CC_URL_OSPDF . '?' . PARAMETER_MODE . '=showconfirmation&' . PARAMETER_ORDER . '=' . $order->order_id); $response[] = 'label_orderpdflink=' . rawurlencode($pdfdoc->name($pdfdoc->MODE_CONFIRMATION)); } else $response[] = 'label_orderpdflink='; $response[] = 'button_pdflink='. rawurlencode($order->pdf_creation == PDF_CREATION_NEVER && !$order->bill_id && !CC_SITE_BILLHASLEFTTHEBUILDING ? '1' : '0'); $response[] = 'order_expecteddate='.($order->expected_date ? rawurlencode(date(CC_SITE_DATEFORMAT, strtotime($order->expected_date))) : ''); $response[] = 'label_name='.rawurlencode($order->client->firstname.' '.$order->client->lastname); $response[] = 'client_deviatingshippingaddress='.rawurlencode($order->client->deviating_shipping_address); $response[] = 'client_shippingsalutation='.rawurlencode($order->client->shipping_salutation); $response[] = 'client_shippingfirstname='.rawurlencode($order->client->shipping_firstname); $response[] = 'client_shippinglastname='.rawurlencode($order->client->shipping_lastname); $response[] = 'client_shippingstreet='.rawurlencode($order->client->shipping_street); $response[] = 'client_shippingstreetnumber='.rawurlencode($order->client->shipping_streetnumber); $response[] = 'client_shippingzip='.rawurlencode($order->client->shipping_zip); $response[] = 'client_shippingcity='.rawurlencode($order->client->shipping_city); $response[] = 'client_shippingcountry='.rawurlencode(substr($order->client->shipping_country, 11)); $response[] = 'client_shippingcompany='.rawurlencode($order->client->shipping_company); $response[] = 'multilabel_currency='.rawurlencode($order->currency); $response[] = 'label_b2who='.rawurlencode($order->b2b ? CC_RESSOURCE_BASKETNET : CC_RESSOURCE_BASKETGROSS); $response[] = 'label_couponid='.rawurlencode($order->coupon_id); $response[] = 'label_couponcaption='.rawurlencode($order->coupon_caption); $response[] = 'label_paymentdate='.($order->payment_date ? rawurlencode(date(CC_SITE_DATEFORMAT, strtotime($order->payment_date))) : ''); $response[] = 'label_shippingdate='.($order->shipping_date ? rawurlencode(date(CC_SITE_DATEFORMAT, strtotime($order->shipping_date))) : ''); $response[] = 'label_subtotal='.rawurlencode(format::price($order->get_subtotal(), $order->currency)); $response[] = 'label_shippingpaymentcost='.rawurlencode(format::price($order->get_shipping_cost() + $order->get_payment_cost(), $order->currency)); $response[] = 'label_rebate='.rawurlencode(format::price($order->get_rebate(), $order->currency)); $response[] = 'label_vat='.rawurlencode(format::price($order->get_totalvat(), $order->currency)); $response[] = 'label_total='.rawurlencode(format::price($order->get_totalprice(), $order->currency)); die('1'.implode('&', $response)); } // Alle Artikel zu einem Auftrag holen function get_items(&$order) { global $orderstatus_ressources; $response = array(); foreach ($order->items as $item) { $response[] = 'uid='.$item->uid.'_'.$item->position; $response[] = 'icon='.rawurlencode(constant('CC_ICON_STATUS'.($item->order_status ? strtoupper($item->order_status) : 'A'))); $response[] = 'statusshort='.rawurlencode($item->order_status); $response[] = 'id='.rawurlencode($item->id); $response[] = 'caption='.rawurlencode($item->caption); if ($order->b2b) { $price = $response[] = 'gross='.rawurlencode(format::cleanprice(round($item->price * (1 + ($item->vat / 100)), 2))); $response[] = 'net='.rawurlencode(''.format::cleanprice($item->price).''); } else { $price = $response[] = 'gross='.rawurlencode(''.format::cleanprice($item->price).''); $response[] = 'net='.rawurlencode(format::cleanprice(round($item->price / (1 + ($item->vat / 100)), 2))); } $response[] = 'vat='.rawurlencode(format::cleanprice($item->vat)); $response[] = 'quantity='.rawurlencode($item->quantity); $response[] = 'unit='.rawurlencode($item->unit); $response[] = 'total='.rawurlencode(format::cleanprice(round($item->quantity * $item->price, 2))); $response[] = 'push'; } die('1'.implode('&', $response)); } //////////////////////////////////////////////////////////////////////////// switch($mode = post(PARAMETER_MODE, CHECK_ALPHA_)) { //////////////////////////////////////////////////////////////////////////// Aufträge // Auftragsstatus ändern case 'set_orderstatus': case 'set_orderstatuscomplete': $ids = explode(',', post(PARAMETER_ID, CHECK_NUMCOMMA)); $status = post(PARAMETER_STATUS, CHECK_ALPHA1); if (!in_array($status, $orderstatus)) die('Fehler #1'); foreach ($ids as $id) { $order = new order(floor($id)); if (!$order->order_id) die('Fehler #2'); $order->set_status($status, $mode == 'set_orderstatuscomplete'); if ($order->status == CC_RESSOURCE_ORDERSTATUSSHORT_SHIPPED && $order->pdf_creation == PDF_CREATION_ONSHIPP) { include_once(CC_BLOGIC_PDFDOC); $pdf = new pdfdoc(CC_SITE_FILEKEY, DOCS, $order); $pdf->generate($pdf->MODE_BILL); } // Status Email verschicken if (post(PARAMETER_1, CHECK_NUM)) $order->send_status_email(); } die('1'.$order->status); break; // Rechnung erstellen und ggf. versenden case 'create_pdf': $order_id = post(PARAMETER_ORDER, CHECK_NUM); $order = new order($order_id); if (CC_SITE_BILLHASLEFTTHEBUILDING) die('0'); include_once(CC_BLOGIC_PDFDOC); $pdf = new pdfdoc(CC_SITE_FILEKEY, DOCS, $order); $pdf->generate($pdf->MODE_BILL); $status = post(PARAMETER_STATUS, CHECK_BOOL); if ($status) { $order->send_status_email('p'); } die('1'.$order->status); break; // Artikelstatus ändern case 'set_itemstatus': $ids = explode(',', post(PARAMETER_ID, CHECK_ALPHANUMCOMMA)); $order_id = post(PARAMETER_ORDER, CHECK_NUM); $status = post(PARAMETER_STATUS, CHECK_ALPHA1); if (!in_array($status, $orderstatus)) die('Fehler #1'); $order = new order($order_id); foreach ($order->items as $item) if (in_array($item->uid.'_'.$item->position, $ids)) { $item->order_status = $status; $item->store(); } die('1'.$status); break; // Einen Auftrag übertragen case 'get_order': get_order(); break; // Einen geänderten Auftrag speichern case 'set_order': case 'update_order': $order_id = post(PARAMETER_ID, CHECK_NUM); $order = new order($order_id); $p = post('order_paymentcaption'); if ($order->payment_caption != $p) { $order->payment_param = null; } $order->payment_caption = $p; $order->payment_amount = floatval(str2num(post('order_paymentamount'), CHECK_NUMVALUE)); $order->payment_absolute = post('order_paymentabsolute', CHECK_BOOL); if (!$order->payment_absolute) { $order->payment_amount = min($order->payment_amount, 100); $order->payment_amount = max($order->payment_amount, 0); } $order->paymentrebate_amount = floatval(str2num(post('order_paymentrebateamount'), CHECK_NUMVALUE)); $order->paymentrebate_absolute = post('order_paymentrebateabsolute', CHECK_BOOL); if (!$order->paymentrebate_absolute) { $order->paymentrebate_amount = min($order->paymentrebate_amount, 100); $order->paymentrebate_amount = max($order->paymentrebate_amount, 0); } $order->payment_vat = floatval(str2num(post('order_paymentvat', CHECK_NUMVALUE))); $order->payment_vat = min($order->payment_vat, 100); $order->payment_vat = max($order->payment_vat, 0); $order->expected_date = postornull('order_expecteddate'); if ($order->expected_date) { // Tag $expr_date = CC_SITE_DATEFORMAT; $expr_date = str_replace('d', "([0123][0-9])", $expr_date); $expr_date = str_replace('m', "[01][0-9]", $expr_date); $expr_date = str_replace('Y', "20[0-9][0-9]", $expr_date); $expr_date = str_replace('.', "\.", $expr_date); preg_match('/'.$expr_date.'/', $order->expected_date, $parts); $day = $parts[1]; // Monat $expr_date = CC_SITE_DATEFORMAT; $expr_date = str_replace('d', "[0123][0-9]", $expr_date); $expr_date = str_replace('m', "([01][0-9])", $expr_date); $expr_date = str_replace('Y', "20[0-9][0-9]", $expr_date); $expr_date = str_replace('.', "\.", $expr_date); preg_match('/'.$expr_date.'/', $order->expected_date, $parts); $month = $parts[1]; // Jahr $expr_date = CC_SITE_DATEFORMAT; $expr_date = str_replace('d', "[0123][0-9]", $expr_date); $expr_date = str_replace('m', "[01][0-9]", $expr_date); $expr_date = str_replace('Y', "(20[0-9][0-9])", $expr_date); $expr_date = str_replace('.', "\.", $expr_date); preg_match('/'.$expr_date.'/', $order->expected_date, $parts); $year = $parts[1]; $order->expected_date = date('Y-m-d', mktime(5, 5, 5, $month, $day, $year)); } $s = post('order_shippingcaption'); if ($order->shipping_caption != $s) $order->shipping_trackingurl = null; $order->shipping_caption = $s; $order->shipping_cost = floatval(str2num(post('order_shippingcost', CHECK_NUMVALUE))); $order->shipping_vat = floatval(str2num(post('order_shippingvat'))); $order->shipping_vat = min($order->shipping_vat, 100); $order->shipping_vat = max($order->shipping_vat, 0); $order->tracking_id = postornull('order_trackingid'); $order->message = postornull('order_message'); $order->client->bank_accountholder = postornull('client_bankaccountholder'); $order->client->bank_accountnumber = postornull('client_bankaccountnumber'); $order->client->bank_code = postornull('client_bankcode'); $order->client->bank_name = postornull('client_bankname'); $order->client->credit_accountholder = postornull('client_creditaccountholder'); $order->client->credit_accountnumber = postornull('client_creditaccountnumber'); $order->client->credit_validuntil = postornull('client_creditvaliduntil'); $order->client->credit_cvc = postornull('client_creditcvc'); $order->sumrebate_amount = floatval(str2num(post('order_sumrebateamount', CHECK_NUMVALUE))); $order->sumrebate_absolute = post('order_sumrebateabsolute', CHECK_BOOL); if (!$order->sumrebate_absolute) { $order->sumrebate_amount = min($order->sumrebate_amount, 100); $order->sumrebate_amount = max($order->sumrebate_amount, 0); } $order->couponrebate_amount = floatval(str2num(post('order_couponrebateamount', CHECK_NUMVALUE))); $order->couponrebate_absolute = post('order_couponrebateabsolute', CHECK_BOOL); if (!$order->couponrebate_absolute) { $order->couponrebate_amount = min($order->couponrebate_amount, 100); $order->couponrebate_amount = max($order->couponrebate_amount, 0); } $order->client->rebate_amount = floatval(str2num(post('client_rebateamount', CHECK_NUMVALUE))); $order->client->rebate_absolute = post('client_rebateabsolute', CHECK_BOOL); if (!$order->client->rebate_absolute) { $order->client->rebate_amount = min($order->client->rebate_amount, 100); $order->client->rebate_amount = max($order->client->rebate_amount, 0); } $order->client->salutation = post('client_salutation'); $order->client->firstname = post('client_firstname'); $order->client->lastname = post('client_lastname'); $order->search_name = $order->client->firstname.' '.$order->client->lastname; $order->client->street = post('client_street'); $order->client->streetnumber = post('client_streetnumber'); $order->client->zip = post('client_zip'); $order->client->city = post('client_city'); $order->client->country = substr($order->client->country, 0, 10).":".post('client_country'); $order->client->company = postornull('client_company'); $order->client->phone = postornull('client_phone'); $order->client->cellphone = postornull('client_cellphone'); $order->client->fax = postornull('client_fax'); $order->client->custom1 = postornull('client_custom1'); $order->client->custom2 = postornull('client_custom2'); $order->client->custom3 = postornull('client_custom3'); $order->client->custom4 = postornull('client_custom4'); $order->client->custom5 = postornull('client_custom5'); $order->client->message = postornull('client_message'); $order->client->deviating_shipping_address = post('client_deviatingshippingaddress', CHECK_BOOL); if ($order->client->deviating_shipping_address) { $order->client->shipping_salutation = post('client_shippingsalutation'); $order->client->shipping_firstname = post('client_shippingfirstname'); $order->client->shipping_lastname = post('client_shippinglastname'); $order->client->shipping_street = post('client_shippingstreet'); $order->client->shipping_streetnumber = post('client_shippingstreetnumber'); $order->client->shipping_zip = post('client_shippingzip'); $order->client->shipping_city = post('client_shippingcity'); $order->client->shipping_country = substr($order->client->shipping_country, 0, 10).":".post('client_shippingcountry'); $order->client->shipping_company = post('client_shippingcompany'); } else { $order->client->shipping_salutation = null; $order->client->shipping_firstname = null; $order->client->shipping_lastname = null; $order->client->shipping_street = null; $order->client->shipping_streetnumber = null; $order->client->shipping_zip = null; $order->client->shipping_city = null; $order->client->shipping_country = null; $order->client->shipping_company = null; } $changed = $order->set_status(post('order_status', CHECK_ALPHA1), false); if ($changed) $order->send_status_email(); $order->client->store(); $order->store(); if ($mode == 'update_order') get_order(); $config = new config('orders'); $config->set('selected', $order_id); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'); break; // Einen oder mehrer Aufträge löschen case 'delete_order' : $ids = explode(',', post(PARAMETER_ID, CHECK_NUMCOMMA)); foreach ($ids as $id) { $order = new order($id); $order->delete(); $deleted[] = floor($id); } die('1'.implode('&', $deleted)); break; //////////////////////////////////////////////////////////////////////////// Artikel // Einen Artikel übertragen case 'get_item': $order_id = post(PARAMETER_ORDER, CHECK_NUM); $order = new order($order_id); $ident = explode('_', post(PARAMETER_ID, CHECK_ALPHANUM_)); $uid = $ident[0]; $position = $ident[1]; $item = new item($uid, $order_id, $position); $response[] = 'item_id='.rawurlencode($item->id); $response[] = 'item_b2b=' .$order->b2b; $response[] = 'item_qprecision='.rawurlencode($item->qprecision); $response[] = 'item_caption='.rawurlencode($item->caption); $response[] = 'item_quantity='.rawurlencode(format::quantity($item->quantity, $item->qprecision, false)); if ($order->b2b) { $response[] = 'item_gross='.rawurlencode(format::cleanprice(round($item->price * (1 + ($item->vat / 100)), 2))); $response[] = 'item_net='.rawurlencode(format::cleanprice($item->price)); } else { $response[] = 'item_gross='.rawurlencode(format::cleanprice($item->price)); $response[] = 'item_net='.rawurlencode(format::cleanprice(round($item->price / (1 + ($item->vat / 100)), 2))); } $response[] = 'item_vat='.rawurlencode(format::cleanprice($item->vat)); $response[] = 'item_status='.rawurlencode($item->order_status ? $orderstatus_index[$item->order_status] : CC_RESSOURCE_ORDERSTATUSSHORT_NEW); $response[] = 'item_unit='.rawurlencode($item->unit); $response[] = 'item_weight='.rawurlencode(format::cleanprice($item->weight)); $response[] = 'item_varacap='.rawurlencode($item->variationa_caption); $response[] = 'item_varbcap='.rawurlencode($item->variationb_caption); $response[] = 'item_specialinfo='.rawurlencode($item->specialinfo); $response[] = 'item_specialinfoid='.($item->specialinfo ? '1' : '0'); $response[] = 'item_downloaduid='.rawurlencode($item->download_uid); die('1'.implode('&', $response)); break; // Einen geänderten Artikel speichern case 'set_item': $order_id = post(PARAMETER_ORDER, CHECK_NUM); $order = new order($order_id); $ident = explode('_', post(PARAMETER_ID, CHECK_ALPHANUM_)); $uid = $ident[0]; $position = $ident[1]; $item = new item($uid, $order_id, $position); $item->id = post('item_id'); $item->caption = post('item_caption'); $item->quantity = floatval(str2num(post('item_quantity', CHECK_NUMVALUE))); if ($order->b2b) $item->price = floatval(str2num(post('item_net', CHECK_NUMVALUE))); else $item->price = floatval(str2num(post('item_gross', CHECK_NUMVALUE))); $item->vat = floatval(str2num(post('item_vat', CHECK_NUMVALUE))); $item->vat = min($item->vat, 100); $item->vat = max($item->vat, 0); $item->order_status = post('item_status', CHECK_ALPHANUM1); $item->unit = post('item_unit'); $item->weight = floatval(str2num(post('item_weight', CHECK_NUMVALUE))); $item->variationa_caption = post('item_varacap'); $item->variationb_caption = post('item_varbcap'); if ($item->specialinfo) $item->specialinfo = post('item_specialinfo'); $item->store(); $config = new config('items'); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); $order = new order($order_id); get_items($order); break; // Alle Artikel zu einer Bestellung auslesen case 'get_items': $order_id = post(PARAMETER_ID, CHECK_NUM); $order = new order($order_id); $config = new config('orders'); $config->set('selected', $order_id); get_items($order); break; //////////////////////////////////////////////////////////////////////////// Kunden // Kundeauswhl merken case 'set_selectedclient': $client_id = post(PARAMETER_ID, CHECK_NUM); $config = new config('clients'); $config->set('selected', $client_id); die('1'); break; // Einen Kunden übertragen case 'get_client': $client_id = post(PARAMETER_ID, CHECK_NUM); $client = new client($client_id); $response[] = 'client_salutation='.rawurlencode($client->salutation); $response[] = 'client_firstname='.rawurlencode($client->firstname); $response[] = 'client_lastname='.rawurlencode($client->lastname); $response[] = 'client_company='.rawurlencode($client->company); $response[] = 'client_street='.rawurlencode($client->street); $response[] = 'client_streetnumber='.rawurlencode($client->streetnumber); $response[] = 'client_zip='.rawurlencode($client->zip); $response[] = 'client_city='.rawurlencode($client->city); $response[] = 'client_country1='.rawurlencode(substr($client->country, 0, 2)); $response[] = 'client_country2='.rawurlencode(substr($client->country, 3, 3)); $response[] = 'client_country3='.rawurlencode(substr($client->country, 7, 3)); $response[] = 'client_country4='.rawurlencode(substr($client->country, 11)); $response[] = 'client_phone='.rawurlencode($client->phone); $response[] = 'client_cellphone='.rawurlencode($client->cellphone); $response[] = 'client_fax='.rawurlencode($client->fax); $response[] = 'client_custom1='.rawurlencode($client->custom1); $response[] = 'client_custom2='.rawurlencode($client->custom2); $response[] = 'client_custom3='.rawurlencode($client->custom3); $response[] = 'client_custom4='.rawurlencode($client->custom4); $response[] = 'client_custom5='.rawurlencode($client->custom5); $response[] = 'client_newsletter='.rawurlencode($client->newsletter); $response[] = 'client_email='.rawurlencode($client->email); $response[] = 'client_reliability='.rawurlencode($client->reliability); $response[] = 'client_novat='.rawurlencode($client->novat); $response[] = 'client_rebateamount='.rawurlencode(format::cleanprice($client->rebate_amount)); $response[] = 'client_rebateabsolute='.rawurlencode($client->rebate_absolute); $response[] = 'client_daystopayment='.rawurlencode($client->daystopayment); $response[] = 'label_currency='.rawurlencode(CC_SITE_CURRENCY); $response[] = 'label_clientid='.rawurlencode($client->client_id); die('1'.implode('&', $response)); break; // Einen geänderten Kunden speichern case 'set_client': $client_id = post(PARAMETER_ID, CHECK_NUM); $client = new client($client_id ? $client_id : null); $client->salutation = post('client_salutation'); $client->firstname = post('client_firstname'); $client->lastname = post('client_lastname'); $client->street = post('client_street'); $client->streetnumber = post('client_streetnumber'); $client->zip = post('client_zip'); $client->city = post('client_city'); $country1 = post('client_country1'); $country2 = post('client_country2'); $country3 = post('client_country3'); $country4 = substr(post('client_country4'), 11); while (strlen($country1) < 2) $country1 .= ' '; while (strlen($country2) < 3) $country2 .= ' '; while (strlen($country3) < 3) $country3 .= ' '; $client->country = "$country1,$country2,$country3:$country4"; $client->company = post('client_company') or null; $client->phone = post('client_phone') or null; $client->cellphone = post('client_cellphone') or null; $client->fax = post('client_fax') or null; $client->custom1 = post('client_custom1') or null; $client->custom2 = post('client_custom2') or null; $client->custom3 = post('client_custom3') or null; $client->custom4 = post('client_custom4') or null; $client->custom5 = post('client_custom5') or null; $client->newsletter = post('client_newsletter', CHECK_BOOL); // Email sollte überlesen werden $client->email = post('client_email'); $client->reliability = intval(post('client_reliability', CHECK_SIGNETNUM)); $client->novat = post('client_novat', CHECK_BOOL); $client->daystopayment = post('client_daystopayment', CHECK_NUM); $client->rebate_absolute = post('client_rebateabsolute', CHECK_BOOL); $client->rebate_amount = floatval(str2num(post('client_rebateamount', CHECK_NUMVALUE))); if (!$client->rebate_absolute && $client->rebate_amount > 100) $client->rebate_amount = 100; if (!$client->rebate_absolute && $client->rebate_amount < 0) $client->rebate_amount = 0; if ($client_id) $client->store(null); else $client_id = $client->store(true); $config = new config('clients'); $config->set('selected', $client_id); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'.$client_id); break; // Einen oder mehrere Kunden löschen case 'delete_client' : $ids = explode(',', post(PARAMETER_ID, CHECK_NUMCOMMA)); foreach ($ids as $id) { $client = new client($id); $client->delete(); $deleted[] = $id; } die('1'.implode('&', $deleted)); break; //////////////////////////////////////////////////////////////////////////// Vorlagen // Vorlagenauswahl merken case 'set_selectedtemplate': $id = post(PARAMETER_ID, CHECK_NUM); $config = new config('templates'); $config->set('selected', $id); die('1'); break; // Eine Vorlage übertragen case 'get_template': $id = post(PARAMETER_ID, CHECK_NUM); $mailtemplate = new abstractdb(TABLE_TEMPLATES, $id); $response[] = 'template_name='.rawurlencode($mailtemplate->name); $response[] = 'template_subject='.rawurlencode($mailtemplate->subject); $response[] = 'template_body='.rawurlencode($mailtemplate->body); $response[] = 'template_status='.rawurlencode($mailtemplate->status); die('1'.implode('&', $response)); break; // Eine geänderte Vorlage speichern case 'set_template': $id = post(PARAMETER_ID, CHECK_NUM); $mailtemplate = new abstractdb(TABLE_TEMPLATES, $id ? $id : null); $mailtemplate->name = post('template_name'); $mailtemplate->subject = post('template_subject'); $mailtemplate->body = post('template_body'); if ($id) $mailtemplate->store(null); else $id = $mailtemplate->store(true); $config = new config('templates'); $config->set('selected', $id); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'); break; // Einen oder mehrer Vorlagen löschen case 'delete_template' : $ids = explode(',', post(PARAMETER_ID, CHECK_NUMCOMMA)); foreach ($ids as $id) { $mailtemplate = new abstractdb(TABLE_TEMPLATES, floor($id)); $mailtemplate->delete(); $deleted[] = floor($id); } die('1'.implode('&', $deleted)); break; //////////////////////////////////////////////////////////////////////////// Emails // Emailauswahl merken case 'set_selectedemail': $id = post(PARAMETER_ID, CHECK_NUM); $config = new config('emails'); $config->set('selected', $id); die('1'); break; // Eine Email übertragen case 'get_email': $email_id = post(PARAMETER_ID, CHECK_NUM); $email = new email($email_id); $response[] = 'email_fromplain='.rawurlencode($email->from_plain); $response[] = 'email_fromemail='.rawurlencode($email->from_email); $response[] = 'email_toplain='.rawurlencode($email->to_plain); $response[] = 'email_toemail='.rawurlencode($email->to_email); $response[] = 'label_date='.rawurlencode(date(CC_SITE_DATEFORMAT, strtotime($email->date)).' '.$email->time); $response[] = 'label_orderid='.rawurlencode($email->order_id); $response[] = 'label_clientid='.rawurlencode($email->client_id); $response[] = 'email_subject='.rawurlencode($email->subject); $response[] = 'text_body='.rawurlencode(str_replace("\n", '
', $email->content_plain)); $response[] = 'html_body='.rawurlencode($email->content_html); die('1'.implode('&', $response)); break; // Eine neue Email speichern case 'set_email': $email = new email(); if ($id = post('order_id', CHECK_NUM)) $email->order_id = $id; if ($id = post('client_id', CHECK_SIGNETNUM)) $email->client_id = $id; $email->to_plain = post('email_toplain'); $email->from_email = post('email_fromemail'); $email->from_plain = post('email_fromplain'); $email->to_email = post('email_toemail'); $email->subject = post('email_subject'); $email->content_plain = post('email_body'); $email->store(); $config = new config('emails'); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'); break; // Eine oder mehrere Emails löschen case 'delete_email' : $ids = explode(',', post(PARAMETER_ID, CHECK_NUMCOMMA)); foreach ($ids as $id) { $email = new email($id); $email->delete(); $deleted[] = $id; } die('1'.implode('&', $deleted)); break; //////////////////////////////////////////////////////////////////////////// Downloads // Downloadauswahl merken case 'set_selecteddownload': $id = post(PARAMETER_ID, CHECK_ALPHANUM); $config = new config('downloads'); $config->set('selected', $id); die('1'); break; // Downloadauftragsauswahl merken case 'set_selecteddownloadorder': $id = post(PARAMETER_ID, CHECK_ALPHANUM); $config = new config('downloadorders'); $config->set('selected', $id); die('1'); break; case 'set_downloadorderxy': $config = new config('downloadorders'); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'); break; case 'done_license': $order_id = post(PARAMETER_ORDER, CHECK_NUM); $id = post(PARAMETER_ID, CHECK_ALPHANUM); $status = post(PARAMETER_STATUS, CHECK_BOOL); $hk = post(PARAMETER_VIEW, CHECK_ALL); $myorder = new order($order_id); foreach ($myorder->items as $it) if ($it->download_uid == $id) $item = $it; $error = false; if ($status) $error = $item->license_new($myorder, $hk, false); else $item->license_refuse($myorder, $hk); $config = new config('downloadorders'); $config->set('x', floatval(post('x', CHECK_SIGNETNUM))); $config->set('y', floatval(post('y', CHECK_SIGNETNUM))); die('1'.($error ? 'error' : '')); break; // Lizenzen übertragen case 'get_downloadorder': $order_id = post(PARAMETER_ORDER, CHECK_NUM); $id = post(PARAMETER_ID, CHECK_ALPHANUM); $licenses = new abstractdb(TABLE_ESDLICENSES); $response = array(); $count = $licenses->db_numrows(array('order_id' => $order_id, 'id' => $id, 'license_pending' => 0)); while($lic = $licenses->get(array('*'), array('order_id' => $order_id, 'id' => $id), array('date desc'))) { $response[] = 'date='.date(CC_SITE_DATEFORMAT, strtotime($lic->date)); $response[] = 'count='.($lic->license_pending == LICENSE_OK ? $count-- : ($lic->license_pending == LICENSE_PENDING ? ' ' : '-')); $response[] = 'hardware_id='.$lic->hardware_id; $response[] = 'license_code='.($lic->license_code ? $lic->license_code : ' '); $response[] = 'client_comment='.rawurlencode($lic->client_comment); $response[] = 'license_pending='.$lic->license_pending; $response[] = 'push'; } die('1'.implode('&', $response)); break; default: die('Unknown mode '. $mode); } ?>