Ubercart 2.0 - قائمة التغييرات في التعليمات البرمجية للسماح بكميات كسور؟

StackOverflow https://stackoverflow.com/questions/1731764

سؤال

أنا أعمل على مشروع Ubercart 2.0 للعميل. إنه متجر أقمشة. إنهم يريدون القدرة على إضافة كميات كسور (أو كمية عشرية عشرية) مثل 1.75 م. هل لدى أي شخص قائمة شاملة بتغيرات التعليمات البرمجية التي سوف تسمح لهذه الوظيفة؟

هل كانت مفيدة؟

المحلول

أعتقد أن تغيير الأساس Ubercart لتحقيق ما تعنيه هو فكرة سيئة. وبعد أنت تكمل نفسك في الأساس لن يكون لديك القدرة على التحديث / الترقية عند وجود إصلاحات أمان، وربما تفترض أن بعض الوحدات النمطية الأخرى التي ستتفترض أنك تستخدم عدد صحيح، وإفساح المجال إلى الأخطاء الصعبة لتتبع واستثناءات PHP.

لم أقدم بحثا مكثفا باسم الملصق السابق، ولكن إذا اضطررت إلى تنفيذ حاجتك بنفسي، فأعلى رأس رأيي

  1. استخدم Centemeters (عدد صحيح) كوحدة قياس منطقية في النهاية الخلفية.
  2. "قناع" الوظيفة العشرية من قبل تغيير النماذج add_to_cart عند التحقق من الصحة / إرسال الوقت، لإدخال المستخدم، بحيث يتم إرسال 1،75 م سوف تحصل على تحويلها 175 سم.
  3. تغيير قوالب المنتج، الكتالوج وقوالب صفحة الطلب من أجل عرض معلومات الأسعار بالأمتار، بحيث تكون القيمة 0.05 € / سم (يتم تخزينها في DB) سيتم عرضها 5 € / م.

فقط سنتان، ولكني مراعاة أن Ubercart في التطوير النشط، وعلى الرغم من الخروج الأخير من حالة مرشح الإفراج - لا يزال لديه الكثير من الأخطاء: أنت تريد حقا أن تكون قادرا على تحديث CodeBase عند الإصلاحات التي تخرجها.

تعديل: فقط للتأكيد أعلاه: نظرا لأنني كتبت هذه الإجابة منذ أقل من أسبوع، فقد خرجت اثنين من تحديثات UC، منها تحديد مشكلة أمنية حرجة واحدة ...

أتمنى أن يساعدك هذا!

نصائح أخرى

لا يسمح Uberart الحالي (V 2.0) بالعشرات بأكمامهم.

إذا كنت تدعو إلى المنتديات Ubercart ل "الكمية" ككسور "،" الكسور للكمية "، و" الكميات العشرية "تحصل على بعض الزيارات. هذه المقالة هي محاولة لتحديد بعض التغييرات التي قد يتم إجراؤها على نظام Ubercart المثبت للسماح بإضافة "الكميات الكسرية" إلى سلة التسوق الخاصة بك.

شكرا لك على lyle و repound رده الذي ساعدني في البدء في هذه المقالة.

أضف إلى Ubercart Core؟

آمل أن يجد مطورو Ubercart طريقة لتنفيذ القدرة على "الكميات الكسرية" إلى Ubercart Core. آمل أن تساعد هذه الوثيقة / المقالة في تحقيق ذلك!

تغييرات قاعدة البيانات

تغيير Ubercart لقبول كميات كسورية يعني أنه يجب تغيير نوع بيانات بعض أعمدة الجدول من عدد صحيح إلى تعويم (م، د). يسمح نوع البيانات Float بالتقدير العشري. هنا وصف من http://dev.mysql.com/doc/refman/5.0/ar/numeric-types.html

هنا، "(م، د)" تعني القيم التي يمكن تخزينها مع أرقام م في المجموع، والتي قد تكون الأرقام التي قد تكون بعد النقطة العشرية. على سبيل المثال، ستبدو العمود المعروف باسم Float (7،4) مثل -999.9999 عند عرضه. يؤدي MySQL إلى التقريب عند تخزين القيم، لذلك إذا قمت بإدراج 999.00009 في عمود تعويم (7،4)، فإن النتيجة التقريبية هي 999.0001.

فيما يلي التغييرات الموجودة في الجداول التي ستجري للسماح بملميات عشرية و 6 أرقام إجمالية. يجب ألا تؤثر تطبيق تغييرات جدول قاعدة البيانات التالية على البيانات الموجودة، إلا إذا كان لديك كميات أكبر من 6 أرقام - في هذه الحالة يمكنك زيادة قيمة M.

// # UC_CART_PRODUCTS

ALTER TABLE `uc_cart_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;
UC_ORDERS

// # UC_ORDERS

ALTER TABLE `uc_orders` MODIFY COLUMN `product_count` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

// # UC_PRODUCTS

ALTER TABLE `uc_products` MODIFY COLUMN `default_qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 1.00;

// # UC_ORDER_PRODUCTS

ALTER TABLE `uc_order_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

التغييرات رمز

// # uc_cart.module (line 1445)
db_query("UPDATE {uc_cart_products} SET qty = %d, changed = UNIX_TIMESTAMP(), data = '%s' WHERE cart_item_id = %d",

ل...

db_query("UPDATE {uc_cart_products} SET qty = %f, changed = UNIX_TIMESTAMP(), data = '%s' WHERE cart_item_id = %d",

--

// # uc_cart.module (line 1509)
db_query("INSERT INTO {uc_cart_products} (cart_id, nid, qty, changed, data) VALUES ('%s', %d, %d, %d, '%s')", $cid, $node->nid, $qty, time(), serialize($data));

ل...

db_query("INSERT INTO {uc_cart_products} (cart_id, nid, qty, changed, data) VALUES ('%s', %d, %f, %d, '%s')", $cid, $node->nid, $qty, time(), serialize($data));

--

// # uc_order.module (line 1043)
db_query("UPDATE {uc_orders} SET uid = %d, order_status = '%s', order_total = %f, product_count = %d, primary_email = '%s', "

ل...

db_query("UPDATE {uc_orders} SET uid = %d, order_status = '%s', order_total = %f, product_count = %f, primary_email = '%s', "

--

// # uc_order.module (line 1143)
db_query("UPDATE {uc_orders} SET product_count = %d WHERE order_id = %d", $count, $order->order_id);

ل...

db_query("UPDATE {uc_orders} SET product_count = %f WHERE order_id = %d", $count, $order->order_id);

--

// # uc_order.install (replace lines 48 to 51)
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,

مع...

'type' => 'float',
'precision' => '6',
'scale' => '2',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.00,

--

// # uc_product.module (line 1207)
db_query("UPDATE {uc_cart_products} SET qty = %d, changed = %d WHERE nid = %d AND cart_id = '%s' AND data = '%s'", $qty, time(), $nid, $cid, serialize($data));

ل...

db_query("UPDATE {uc_cart_products} SET qty = %f, changed = %d WHERE nid = %d AND cart_id = '%s' AND data = '%s'", $qty, time(), $nid, $cid, serialize($data));

--

الأفكار - تغييرات إضافية

من المحتمل أن تكون فكرة جيدة لإضافة بعض الوظائف للسماح باختيار ما إذا كان من الممكن إجراء نوع / فئة / فئة معينة لقبول "الكم كسور". ربما إضافة عمود منطقي (مثل "السماح_frac_qty") في جدول UC_Product_classes أو جدول UC_Products. ثم بالطبع، سيكون هناك المزيد من إضافات التعليمات البرمجية / التغييرات للسماح بذلك. أيضا، قد تحتاج أيضا عمود "PKG_QTY" في جدول UC_Products أيضا إلى تغييره

Other Ubercart منشورات المنتدى

http://www.ubercart.org/forum/support/4651/use_fractions_quantity_15_yards.

http://www.ubercart.org/forum/support/6074/decimal_quantities_items.

http://www.ubercart.org/issue/6044/abiility_have_decimal_quantities.

http://www.ubercart.org/forum/ideas_and_suggestions/3283/comma_values_quantity_field.

فقط في حالة يحتاج شخص ما إلى الحل من رسالة Robnardo، ولكن التقدم بطلب للحصول على Drupal 7، Ubercart 3 - وصفت ما كان يعمل بالنسبة لي في Drupal 7، Ubercart 3.1 هنا:http://www.ubercart.org/project/uc_decimal_quantities#Comment-68750.

حصلت على ماك على حق. هذا النهج أبسط وأقل عرضة لمشاكل الصيانة.

من شأنه أن يجعلها تافهة لدعم أي نوع من القياس باستخدام جافا سكريبت لتوليد نظام قياس المنسدلة والقيام بالتحويل على إرسال.

لقد نشرت وحدة نمطية أعمل عليها http://www.ubercart.org/issue/6044/abiility_have_decimal_quantities. ... ارجوك اترك اقتراحاتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top