update( 'pp_shop_products', [ 'price_brutto_promo' => $price_brutto_promo, 'price_netto_promo' => $price_netto_promo ], [ 'id' => \S::get( 'products' )[0] ] ); \admin\factory\ShopProduct::update_product_combinations_prices( \S::get( 'products' )[0], $price_netto, $vat, $price_netto_promo ); echo json_encode( [ 'status' => 'ok', 'price_brutto_promo' => $price_brutto_promo, 'price_brutto' => $price_brutto ] ); exit; } echo json_encode( [ 'status' => 'error' ] ); exit; } // get_products_by_category static public function get_products_by_category() { global $mdb; $products = $mdb -> select( 'pp_shop_products_categories', 'product_id', [ 'category_id' => \S::get( 'category_id' ) ] ); echo json_encode( [ 'status' => 'ok', 'products' => $products ] ); exit; } static public function mass_edit() { return \Tpl::view( 'shop-product/mass-edit', [ 'products' => \admin\factory\ShopProduct::products_list(), 'categories' => \admin\factory\ShopCategory::subcategories( null ), 'dlang' => \front\factory\Languages::default_language() ] ); } static public function generate_combination() { foreach ( $_POST as $key => $val ) { if ( strpos( $key, 'attribute_' ) !== false ) { $attribute = explode( 'attribute_', $key ); $attributes[ $attribute[1] ] = $val; } } if ( \admin\factory\ShopProduct::generate_permutation( (int) \S::get( 'product_id' ), $attributes ) ) \S::alert( 'Kombinacje produktu zostały wygenerowane.' ); header( 'Location: /admin/shop_product/product_combination/product_id=' . (int) \S::get( 'product_id' ) ); exit; } //usunięcie kombinacji produktu static public function delete_combination() { if ( \admin\factory\ShopProduct::delete_combination( (int)\S::get( 'combination_id' ) ) ) \S::alert( 'Kombinacja produktu została usunięta' ); else \S::alert( 'Podczas usuwania kombinacji produktu wystąpił błąd. Proszę spróbować ponownie' ); header( 'Location: /admin/shop_product/product_combination/product_id=' . \S::get( 'product_id' ) ); exit; } static public function duplicate_product() { if ( \admin\factory\ShopProduct::duplicate_product( (int)\S::get( 'product-id' ), (int)\S::get( 'combination' ) ) ) \S::set_message( 'Produkt został zduplikowany.' ); else \S::alert( 'Podczas duplikowania produktu wystąpił błąd. Proszę spróbować ponownie' ); header( 'Location: /admin/shop_product/view_list/' ); exit; } public static function image_delete() { $response = [ 'status' => 'error', 'msg' => 'Podczas usuwania zdjecia wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \admin\factory\ShopProduct::delete_img( \S::get( 'image_id' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } public static function images_order_save() { if ( \admin\factory\ShopProduct::images_order_save( \S::get( 'product_id' ), \S::get( 'order' ) ) ) echo json_encode( [ 'status' => 'ok', 'msg' => 'Produkt został zapisany.' ] ); exit; } public static function image_alt_change() { $response = [ 'status' => 'error', 'msg' => 'Podczas zmiany atrybutu alt zdjęcia wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \admin\factory\ShopProduct::image_alt_change( \S::get( 'image_id' ), \S::get( 'image_alt' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } // szybka zmiana statusu produktu static public function change_product_status() { if ( \admin\factory\ShopProduct::change_product_status( (int)\S::get( 'product-id' ) ) ) \S::set_message( 'Status produktu został zmieniony' ); header( 'Location: ' . $_SERVER['HTTP_REFERER'] ); exit; } // szybka zmiana google xml label static public function product_change_custom_label() { $response = [ 'status' => 'error', 'msg' => 'Podczas zmiany google xml label wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \admin\factory\ShopProduct::product_change_custom_label( (int) \S::get( 'product_id' ), \S::get( 'custom_label' ), \S::get( 'value' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } // szybka zmiana ceny promocyjnej static public function product_change_price_brutto_promo() { $response = [ 'status' => 'error', 'msg' => 'Podczas zmiany ceny wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \admin\factory\ShopProduct::product_change_price_brutto_promo( (int) \S::get( 'product_id' ), \S::get( 'price' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } // szybka zmiana ceny static public function product_change_price_brutto() { $response = [ 'status' => 'error', 'msg' => 'Podczas zmiany ceny wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \admin\factory\ShopProduct::product_change_price_brutto( (int) \S::get( 'product_id' ), \S::get( 'price' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } // pobierz bezpośredni url produktu static public function ajax_product_url() { echo json_encode( [ 'url' => \shop\Product::getProductUrl( \S::get( 'product_id' ) ) ] ); exit; } // zapisanie produktu public static function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania produktu wystąpił błąd. Proszę spróbować ponownie.' ]; $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopProduct::save( $values['id'], $values['name'], $values['short_description'], $values['description'], $values['status'], $values['meta_description'], $values['meta_keywords'], $values['seo_link'], $values['copy_from'], $values['categories'], $values['price_netto'], $values['price_brutto'], $values['vat'], $values['promoted'], $values['warehouse_message_zero'], $values['warehouse_message_nonzero'], $values['tab_name_1'], $values['tab_description_1'], $values['tab_name_2'], $values['tab_description_2'], $values['layout_id'], $values['products_related'], (int) $values['set'], $values['price_netto_promo'], $values['price_brutto_promo'], $values['new_to_date'], $values['stock_0_buy'], $values['wp'], $values['custom_label_0'], $values['custom_label_1'], $values['custom_label_2'], $values['custom_label_3'], $values['custom_label_4'], $values['additional_message'], (int)$values['quantity'], $values['additional_message_text'], $values['additional_message_required'] == 'on' ? 1 : 0, $values['canonical'], $values['meta_title'], $values['producer_id'], $values['sku'], $values['ean'], $values['product_unit'], $values['weight'], $values['xml_name'], $values['custom_field_name'], $values['custom_field_required'], $values['security_information'], $values['custom_field_type'] ) ) { $response = [ 'status' => 'ok', 'msg' => 'Produkt został zapisany.', 'id' => $id ]; } echo json_encode( $response ); exit; } // product_unarchive static public function product_unarchive() { if ( \admin\factory\ShopProduct::product_unarchive( (int) \S::get( 'product_id' ) ) ) \S::alert( 'Produkt został przywrócony z archiwum.' ); else \S::alert( 'Podczas przywracania produktu z archiwum wystąpił błąd. Proszę spróbować ponownie' ); header( 'Location: /admin/product_archive/products_list/' ); exit; } static public function product_archive() { if ( \admin\factory\ShopProduct::product_archive( (int) \S::get( 'product_id' ) ) ) \S::alert( 'Produkt został przeniesiony do archiwum.' ); else \S::alert( 'Podczas przenoszenia produktu do archiwum wystąpił błąd. Proszę spróbować ponownie' ); header( 'Location: /admin/shop_product/view_list/' ); exit; } public static function product_delete() { if ( \admin\factory\ShopProduct::product_delete( (int) \S::get( 'id' ) ) ) \S::set_message( 'Produkt został usunięty.' ); else \S::alert( 'Podczas usuwania produktu wystąpił błąd. Proszę spróbować ponownie' ); header( 'Location: /admin/shop_product/view_list/' ); exit; } // edycja produktu public static function product_edit() { global $user, $mdb; if ( !$user ) { header( 'Location: /admin/' ); exit; } \admin\factory\ShopProduct::delete_nonassigned_images(); \admin\factory\ShopProduct::delete_nonassigned_files(); return \Tpl::view( 'shop-product/product-edit', [ 'product' => \admin\factory\ShopProduct::product_details( (int) \S::get( 'id' ) ), 'languages' => \admin\factory\Languages::languages_list(), 'categories' => \admin\factory\ShopCategory::subcategories( null ), 'layouts' => \admin\factory\Layouts::layouts_list(), 'products' => \admin\factory\ShopProduct::products_list(), 'dlang' => \front\factory\Languages::default_language(), 'sets' => \shop\ProductSet::sets_list(), 'producers' => \admin\factory\ShopProducer::all(), 'units' => ( new \Domain\Dictionaries\DictionariesRepository( $mdb ) ) -> allUnits(), 'user' => $user ] ); } // ajax_load_products ARCHIVE static public function ajax_load_products_archive() { echo json_encode( [ 'status' => 'deprecated', 'msg' => 'Endpoint nie jest juz wspierany. Uzyj /admin/product_archive/products_list/.', 'redirect_url' => '/admin/product_archive/products_list/' ] ); exit; } // ajax_load_products static public function ajax_load_products() { $response = [ 'status' => 'error', 'msg' => 'Podczas ładowania produktów wystąpił błąd. Proszę spróbować ponownie.' ]; \S::set_session( 'products_list_current_page', \S::get( 'current_page' ) ); \S::set_session( 'products_list_query', \S::get( 'query' ) ); if ( $products = \admin\factory\ShopProduct::ajax_products_list( \S::get_session( 'products_list_current_page' ), \S::get_session( 'products_list_query' ) ) ) { $response = [ 'status' => 'ok', 'pagination_max' => ceil( $products['products_count'] / 10 ), 'html' => \Tpl::view( 'shop-product/products-list-table', [ 'products' => $products['products'], 'current_page' => \S::get( 'current_page' ), 'baselinker_enabled' => \admin\factory\Integrations::baselinker_settings( 'enabled' ), 'apilo_enabled' => \admin\factory\Integrations::apilo_settings( 'enabled' ), 'sellasist_enabled' => \admin\factory\Integrations::sellasist_settings( 'enabled' ), 'show_xml_data' => \S::get_session( 'show_xml_data' ) ] ) ]; } echo json_encode( $response ); exit; } static public function view_list() { $current_page = \S::get_session( 'products_list_current_page' ); if ( !$current_page ) { $current_page = 1; \S::set_session( 'products_list_current_page', $current_page ); } $query = \S::get_session( 'products_list_query' ); if ( $query ) { $query_array = []; parse_str( $query, $query_array ); } if ( \S::get( 'show_xml_data' ) === 'true' ) { \S::set_session( 'show_xml_data', true ); } else if ( \S::get( 'show_xml_data' ) === 'false' ) { \S::set_session( 'show_xml_data', false ); } return \Tpl::view( 'shop-product/products-list', [ 'current_page' => $current_page, 'query_array' => $query_array, 'pagination_max' => ceil( \admin\factory\ShopProduct::count_product() / 10 ), 'baselinker_enabled' => \admin\factory\Integrations::baselinker_settings( 'enabled' ), 'apilo_enabled' => \admin\factory\Integrations::apilo_settings( 'enabled' ), 'sellasist_enabled' => \admin\factory\Integrations::sellasist_settings( 'enabled' ), 'show_xml_data' => \S::get_session( 'show_xml_data' ), 'shoppro_enabled' => \admin\factory\Integrations::shoppro_settings( 'enabled' ) ] ); } // // KOMBINACJE PRODUKTU // // zapisanie możliwości zakupu przy stanie 0 w kombinacji produktu static public function product_combination_stock_0_buy_save() { \admin\factory\ShopProduct::product_combination_stock_0_buy_save( (int)\S::get( 'product_id' ), \S::get( 'stock_0_buy' ) ); exit; } // zapisanie sku w kombinacji produktu static public function product_combination_sku_save() { \admin\factory\ShopProduct::product_combination_sku_save( (int)\S::get( 'product_id' ), \S::get( 'sku' ) ); exit; } // zapisanie ilości w kombinacji produktu static public function product_combination_quantity_save() { \admin\factory\ShopProduct::product_combination_quantity_save( (int)\S::get( 'product_id' ), \S::get( 'quantity' ) ); exit; } // zapisanie ceny w kombinacji produktu static public function product_combination_price_save() { \admin\factory\ShopProduct::product_combination_price_save( (int)\S::get( 'product_id' ), \S::get( 'price' ) ); exit; } //wyświetlenie kombinacji produktu static public function product_combination() { return \Tpl::view( 'shop-product/product-combination', [ 'product' => \admin\factory\ShopProduct::product_details( (int) \S::get( 'product_id' ) ), 'attributes' => \admin\factory\ShopAttribute::get_attributes_list(), 'default_language' => \front\factory\Languages::default_language(), 'product_permutations' => \admin\factory\ShopProduct::get_product_permutations( (int) \S::get( 'product_id' ) ) ] ); } // generate_sku_code static public function generate_sku_code() { $response = [ 'status' => 'error', 'msg' => 'Podczas generowania kodu sku wystąpił błąd. Proszę spróbować ponownie.' ]; if ( $sku = \shop\Product::generate_sku_code( \S::get( 'product_id' ) ) ) $response = [ 'status' => 'ok', 'sku' => $sku ]; echo json_encode( $response ); exit; } // product_xml_name_save static public function product_xml_name_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania nazwy produktu wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \shop\Product::product_xml_name_save( \S::get( 'product_id' ), \S::get( 'product_xml_name' ), \S::get( 'lang_id' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } // product_custom_label_suggestions static public function product_custom_label_suggestions() { $response = [ 'status' => 'error', 'msg' => 'Podczas pobierania sugestii dla custom label wystąpił błąd. Proszę spróbować ponownie.' ]; if ( $suggestions = \shop\Product::product_custom_label_suggestions( \S::get( 'custom_label' ), \S::get( 'label_type' ) ) ) $response = [ 'status' => 'ok', 'suggestions' => $suggestions ]; echo json_encode( $response ); exit; } // product_custom_label_save static public function product_custom_label_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania custom label wystąpił błąd. Proszę spróbować ponownie.' ]; if ( \shop\Product::product_custom_label_save( \S::get( 'product_id' ), \S::get( 'custom_label' ), \S::get( 'label_type' ) ) ) $response = [ 'status' => 'ok' ]; echo json_encode( $response ); exit; } }