انجمن تعطیل می باشد.

از ایجاد تاپیک و پست های جدید خود داری نمایید.

لطفا این اطلاعیه را مطالعه بفرمایید.

تعیین شرط حداقل و حداکثر سفارش

ارسال شده در: پرسش و پاسخ
  • djbagoor در: سه شنبه ۱۲ خرداد ۱۳۹۴ در ۱۱:۵۷ ق٫ظ #4780

    سلام
    امکانش هست در حالت “محصول” در “مجموع” وقتی جمع کل از یک مقداری پایین تر و بالاتر میشه یک ارور ظاهر بشه و فرم ارسال نشه
    من می خوام حداقل و حداکثر جمع کل فاکتر بشه 100.000 تومان نه بیشتر و نه کمتر

    چون 3تا پکیج برای فروش دارم که هر کدام 50 – 100 و 200 هزار تومانی هستند بعد افراد حق انتخاب ترکیب محصولات داخل پکیج را دارند در عین اینکه حق انتخاب دارند نباید از مقدار قیمت پکیج بیشتر و یا کمتر انتخاب کنند بعد برن واسه پرداخت.
    اگه کم بود error بده اگه زیاد بود هم error بده.

    چیکار کنم ؟

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: سه شنبه ۱۲ خرداد ۱۳۹۴ در ۷:۲۲ ب٫ظ #4799

    سلام / باشه بررسی میکنم هوکش رو میذارم براتون /

    • djbagoor در: سه شنبه ۱۲ خرداد ۱۳۹۴ در ۷:۵۹ ب٫ظ #4803

      خیلی گلی شما مرسی 🙂

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: سه شنبه ۱۲ خرداد ۱۳۹۴ در ۱۱:۵۷ ب٫ظ #4807

    خواهش / فقط اگه ممکنه فرمتون رو اکسپورت (برون ریزی) کنید ارسال کنید تا ببینم از چه نوع فیلدهای قیمت گذاری استفاده کردید .

  • djbagoor در: چهارشنبه ۱۳ خرداد ۱۳۹۴ در ۱۱:۵۳ ق٫ظ #4808

    من قصدم این بود که بتونم این سناریو رو پیاده کنم ولی نشد تصمیم گرفتم برای هر پکیج یک فرم جدا بسازم:
    http://alikhani.info/scenario.docx
    ببخشید تو خروجی گرفتن با یکی از plugin ها مشکل بوجود اومد .
    خروجی پکیج 100 ماهه خدمت شما :
    http://alikhani.info/gravityforms-export-2015-06-03.json

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: چهارشنبه ۱۳ خرداد ۱۳۹۴ در ۱۰:۳۳ ب٫ظ #4827

    کد زیر رو بذارید تو فانکشن قالبتون :
    بجای 32 آیدی فرم رو بذارید / بجای 6 آیدی فیلد مجموع رو بذارید که البته برای شما احتمالا همون 6 باقی میمونه / به حای 100000 هم قیمت مینیمم رو .

    add_filter(‘gform_field_validation_32_6′,’set_min_price’, 10, 4);
    function set_min_price($result, $value, $form, $field){

    $min = 100000;

    if ( intval($value) < $min ) { $result["is_valid"] = false; $result["message"] = 'محصول نباید از فلان قدر کمتر باشد '; return $result; } return $result; }

  • djbagoor در: پنجشنبه ۱۴ خرداد ۱۳۹۴ در ۰:۵۰ ق٫ظ #4828

    ای پیرشی جوون دستت درد نکنه 🙂
    ولی خوب هی ارور گرفت رو سایت ما اینه که با گِرای شما بُرجکشو زدیم به این صورت که :

    https://www.gravityhelp.com/documentation/article/gform_field_validation/

    Price field validation:

    add_filter( 'gform_field_validation_3_2', 'custom_validation', 10, 4 );
    function custom_validation( $result, $value, $form, $field ) {
        //change value for price field to just be numeric (strips off currency symbol, etc.) using Gravity Forms to_number function
        //the second parameter to to_number is the currency code, ie "USD", if not specified USD is used
        $number = GFCommon::to_number( $value, '' );
    
        if ( $result['is_valid'] && intval( $number ) < 180000 ) {
            $result['is_valid'] = false;
            $result['message'] = 'You must enter at least $3,000.';
        }
        return $result;
    }
    

    و تازه اینم پیدا کردم که اگه بخوام حداقل تعداد سفارش رو تعیین کنم باید چیکار کنم :
    http://gravitywiz.com/set-a-minimum-order-quantity/

    Set a Minimum Order Quantity

    add_filter('gform_validation_86', 'gform_validate_minimum_quantity');
    function gform_validate_minimum_quantity($validation_result) {
        
        $min_qty = 20;
        $min_qty_message = 'You must order a minimum of %1$d tickets. Order %2$d more tickets to complete your order.';
        $min_qty_fields = array();
        
        /* no need to edit below this line */
        
        $form = $validation_result['form'];
        $quantity = 0;
        $qty_fields = array();
        
        foreach($form['fields'] as &$field) {
            
            // if $min_qty_fields specified, make sure only applicable quantity fields are totaled
            if(!empty($min_qty_fields) && !in_array($field['id'], $min_qty_fields))
                continue;
            
            if(in_array(RGFormsModel::get_input_type($field), array('singleproduct', 'calculation'))) {
                
                // check if product field has separate quantity field, if so skip
                if(sizeof(GFCommon::get_product_fields_by_type($form, array("quantity"), $field['id'])) > 0)
                    continue;
                    
                $quantity += GFCommon::clean_number(rgpost("input_{$field['id']}_3"));
                $qty_fields[] =& $field;
                
            } else if($field['type'] == 'quantity') {
                $quantity += GFCommon::clean_number(rgpost("input_{$field['id']}"));
                $qty_fields[] =& $field;
            }
            
        }
        
        if($quantity >= $min_qty)
            return $validation_result;
        
        for($i = 0; $i < count($qty_fields); $i++) {
            $qty_fields[$i]['failed_validation'] = true;
            $qty_fields[$i]['validation_message'] = sprintf($min_qty_message, $min_qty, $min_qty - $quantity);
        }
        
        $validation_result['is_valid'] = false;
        $validation_result['form'] = $form;
        
        return $validation_result;
    }
    
  • djbagoor در: پنجشنبه ۱۴ خرداد ۱۳۹۴ در ۱:۳۰ ق٫ظ #4832

    * خوب حالا سوال جدید :
    با توجه به اینکه من 3تا پکیج دارم و باید 3 فرم با این شرایط داشته باشم که تو هر کدام از این 3 فرم مشتری یک رقم خاص رو آماده پرداخت کنه نه کمتر و نه بیشتر امکان خلاصه کردن و ساده کردن این کد برای شما هست؟
    یعنی مثلا
    پکیج A – فرم 1 – حداقل و حداکثر مجموع باید 100000 تومان باشد
    پکیج B – فرم 2 – حداقل و حداکثر مجموع باید 180000 تومان باشد
    پکیج C – فرم 3 – حداقل و حداکثر مجموع باید 200000 تومان باشد

    add_filter( 'gform_field_validation_3_2', 'custom_validation', 10, 4 );
    function custom_validation( $result, $value, $form, $field ) {
        //change value for price field to just be numeric (strips off currency symbol, etc.) using Gravity Forms to_number function
        //the second parameter to to_number is the currency code, ie "USD", if not specified USD is used
        $number = GFCommon::to_number( $value, '' );
    
        if ( $result['is_valid'] && intval( $number ) < 180000 ) {
            $result['is_valid'] = false;
            $result['message'] = ' سفارش شما باید دقیقا 180.000 تومان باشد نه کمتر و نه بیشتر';
        }
            if ( $result['is_valid'] && intval( $number ) > 180000 ) {
            $result['is_valid'] = false;
            $result['message'] = ' سفارش شما باید دقیقا 180.000 تومان باشد نه کمتر و نه بیشتر';
        }
        return $result;
    }

    خوب من که کد نویسی بلد نیستم نظر شما چیه استاد؟ 🙂

    • djbagoor در: پنجشنبه ۱۴ خرداد ۱۳۹۴ در ۸:۳۶ ق٫ظ #4833

      راستی این کد تو فرم چند مرحله ای هم جواب می ده کامل خیلی خوبه 🙂 🙂 🙂

  • djbagoor در: پنجشنبه ۱۴ خرداد ۱۳۹۴ در ۱۰:۲۸ ق٫ظ #4834

    حالا می خوایم کار رو یکم سخت تر کنیم :
    امکانش هست تو این فرم Multi-page تو Step1 که مشتری داره بسته (پکیج) خودش رو انتخاب می کنه در واقع شرط مجموع رو انتخاب کرده باشه
    یعنی : مثلا من بسته 50 ماهه ( 150.000 تومان ) را انتخاب می کنم شرط “مجموع” بشه مساوی با 150.000 تومان
    باز تو همون فرم اگه بسته 100 ماهه ( 250.000 تومان ) را انتخاب می کنم شرط “مجموع” بشه مساوی با 250.000 تومان

    فرم :
    http://alikhani.info/multi.json

    می تونی کاریش کنی؟

    فقط اگه لطف کنی کد رو برام تو یه فایل txt بذار اینجا دفعه پیش به مشکل خوردم 🙁 – دست شما درد نکنه

  • djbagoor در: جمعه ۱۵ خرداد ۱۳۹۴ در ۴:۱۹ ب٫ظ #4856

    الان لطفا اینو به مبگو که من می خوام این کد رو واسه 3تا فرم (3تا ID جدا ) با شرط های متفاوت همزمان استفاده کنم
    حالا باید چیکار کنم ؟

    <?php
    
    add_filter( 'gform_field_validation_11_38', 'custom_validation', 10, 4 );
    function custom_validation( $result, $value, $form, $field ) {
    
        $number = GFCommon::to_number( $value, '' );
    
        if ( $result['is_valid'] && intval( $number ) < 1500000 ) {
            $result['is_valid'] = false;
            $result['message'] = ' سفارش شما بايد دقيقا 1.500.000 ريال باشد نه کمتر و نه بيشتر (مقدار ريالي شما کمتر است)';
        }
            if ( $result['is_valid'] && intval( $number ) > 1500000 ) {
            $result['is_valid'] = false;
            $result['message'] = '  سفارش شما بايد دقيقا 1.500.000 ريال باشد نه کمتر و نه بيشتر (مقدار ريالي شما بيشتر است)';
        }
        return $result;
    }
    
    ?>

    کماکان با تشکر فراوان

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: دوشنبه ۱۸ خرداد ۱۳۹۴ در ۲:۲۷ ق٫ظ #4911

    سلام .
    دوست عزیز ما اونقدر ها فرصت نداریم بخوایم کل فرمهای دوستان رو شخصی سازی کنیم . ولی اون چیزی که توی عنوان تاپیک خواستید رو در اختیارتون گذاشتیم و سر نخ رو دادیم دیگه بقیه اش رو خودتون باید زحمت بکشید .

  • djbagoor در: سه شنبه ۱۹ خرداد ۱۳۹۴ در ۹:۳۰ ق٫ظ #5034

    من همین یدونه آخری رو فقط می خوام میشه؟!؟!
    “الان لطفا اینو به مبگو که من می خوام این کد رو واسه 3تا فرم (3تا ID جدا ) با شرط های متفاوت همزمان استفاده کنم
    حالا باید چیکار کنم ؟”

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: چهارشنبه ۲۰ خرداد ۱۳۹۴ در ۲:۰۷ ق٫ظ #5051

    خب باید یا سه بار اون کد رو کپی کنید و بجای 11 اون آیدی فرم رو بذارید و بجای 38 آیدی فیلد رو یا کلا _11_38 رو حذف کنید و داخل تابع 3بار از شرط زیر استفاده کنید و بجای 5 آیدی های اون 3 فرم رو هر بار بذارید :
    if ( $form['id'] == 5 )

  • djbagoor در: چهارشنبه ۲۰ خرداد ۱۳۹۴ در ۹:۳۲ ب٫ظ #5073

    اکی شد دستت درد نکنه
    خدا خیریت بده جوون 🙂

  • حنان ابراهیمی ستوده
    حنان ابراهیمی ستوده در: پنجشنبه ۲۱ خرداد ۱۳۹۴ در ۱:۵۸ ق٫ظ #5080

    خواهش میکنم . لطف دارید شما .

شما برای پاسخ به این جستار باید وارد تارنما شوید.