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);
}
?>