Jump to content

IPCommerceFan

Clients
  • Posts

    493
  • Joined

  • Last visited

 Content Type 

Downloads

Release Notes

IPS4 Guides

IPS4 Developer Documentation

Invision Community Blog

Development Blog

Deprecation Tracker

Providers Directory

Forums

Events

Store

Gallery

Everything posted by IPCommerceFan

  1. ^ This was indeed useful for me. I migrated my cpanel account to a new server yesterday, which also involved updating from MySQL 5.6 to 5.7 and PHP 7.2->7.3. No changes to IPS install (4.4.10) Everything went off without a hitch! Site back up and running without issue, except apparently nothing was being written to the nexus_customers table when a guest would check out. This did not affect registered members. I managed to repro the issue and see the error, which was exactly the above! IPS\Db\Exception: Field 'sfsMemInfo' doesn't have a default value (1364) Its really curious this didn't show itself until I moved the server and updated mysql and php. Its unclear which of those revealed the issue. In any case, this was a huge help. Thanks @FabioPaz and @Daniel F (I opted to just drop the columns)
  2. I would use a "pay what you want" feature for support requests. We often have customers so appreciative of our service that they ask us how they can send us a little extra something just for the after-sales support we deliver. Support Request departments have a "Submission Charge" option, so we would have the value be "pay what you want", in that use case.
  3. As far as brainstorming goes, I think its a good idea to voice our expectations of such a mod, but I also feel that any developer that takes this on in earnest should be able to get an application/plugin 90% of the way there without the need for a whole lot of feedback. Unlike a site-specific request for customization, I feel an integration should essentially just connect as many end points as possible between one platform and the next (Payment, shipping, product listing), and implementation should be driven by the dev's willingness to explore and understand how both commerce and printful work. (signing up for a printful dev account, creating test products, using sandbox features, etc). All in all, I feel it would be a non-starter if we had to spell out everything this type of integration should do from the get-go. As for how I'd use it, I'd love to be able to create a blank product in Commerce (just to generate a package id), link it to a product I created on Printful (perhaps by entering the product ID of my product on printful into a field on the commerce side), and have the ability to sync pricing, stock level (if applicable), size, color, etc into the blank "shell" of a product.
  4. Yup, we've run our business exclusively using Nexus/Commerce/Downloads since 2012, so this has a lot of value for us, especially since we'd like to offer "Merch" without sending customers to another site. We've looked into solutions like BigCommerce, Shopify, etc in the past, but none can beat the fact that nexus is a store and support system in one. We tried BigCommerce + ZenDesk as a proof-of-concept at one point, but it was a terrible fit for us. CS-Cart, Magento, Freshdesk, and others were considered as well, but none could do what we really needed the software to do, which we've accomplished via plugins with Nexus/Commerce.
  5. If you can truly build a fully functional integration for Printful, you can name your price as far as I'm concerned. This goes for any developer reading this!
  6. Just want to say a Printful integration would be amazing. Not saying it needs to be core functionality, however if an application/plugin were available in the market for such integration, it would be a godsend.
  7. We use Callum's application as well. It does the trick for us.
  8. Wow, very different. Thank you for sharing!
  9. Indeed, this requires 4.4.10. I tried to cut it down to use less of the source, but it failed if I didn't include it because its calling $paymentMethodOptions. What would be the proper way, if you don't mind?
  10. Yup just install it as a plugin. I tested on my dev and live site, so it should be good.
  11. Hi, There isn't a built-in option to make Account Credit the default option, however this plugin will do it! Commerce - Account Credit by Default.xml Account Credit selected by default at checkout: This modifies \IPS\nexus\modules\front\checkout\checkout, and is actually just one small change to the form. Instead of the default option being NULL, it is now 0. (Account Credit is technically payment method 0). If there is no account credit, it goes back to not making a specific default selection (NULL): if ( \count( $paymentMethodOptions ) > 1 ) { if ( \IPS\nexus\Customer::loggedIn()->cm_credits[ $this->invoice->currency ]->amount->isGreaterThanZero() ) { $form->add( new \IPS\Helpers\Form\Radio( 'payment_method', 0, TRUE, array( 'options' => $paymentMethodOptions, 'toggles' => $paymentMethodsToggles ) ) ); //0 after 'payment_method' means 0 aka account credit will be the default payment method. } else { $form->add( new \IPS\Helpers\Form\Radio( 'payment_method', NULL, TRUE, array( 'options' => $paymentMethodOptions, 'toggles' => $paymentMethodsToggles ) ) ); } } Hope this helps!
  12. I needed this to be more robust, so I started poking around and discovered I could hook into \IPS\Helpers\Form\Text --> validate() and use custom php to do any kind of validation I want on a given custom commerce field! (custom Text field anyway, I haven't explored other types) In case anyone is need of this and finds this thread during their search, this is where you can run custom validation: //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { exit; } class hook491 extends _HOOK_CLASS_ { /** * Validate * * @throws \InvalidArgumentException * @throws \DomainException * @return TRUE */ public function validate() { $dataToBeValidated = $this->value; //$this->value is anything that is entered into any field on the order form. /* * Run any if statement on your data to determine whether it should return false, some specific value, etc */ if ($dataToBeValidated > 0) { $validation == 1; } //"$this" doesn't know the id of the field, but it knows the name. Here we will evaluate the value entered for the Nexus package custom field with an ID of 5. ( nexus_packages_fields.cf_id in the database ) if ( $this->name == 'nexus_pfield_5' and $validation == 1 and !preg_match('/[A-Z0-9]+/i', $dataToBeValidated) ) //we can add any number of conditions to decide whether the field should be validated or not { throw new \InvalidArgumentException( 'form_bad_value_nexus_pfield_5' ); //added langauge bit to dev\lang.php "'form_bad_value_nexus_pfield_5' => 'Custom validation failure message'" } return parent::validate(); } } Hope this helps someone, and if there is a better way, I'm open to suggestions!
  13. Glad I could help! Nice site btw, makes me feel like installing GTA5 again 😄
  14. You're welcome! This piqued my interest, so I gave it a shot: AdminCP Commerce Display Name.xml It works as far as I can tell/tested, but this should do it! In case its of interest, heres what this plugin consists of: We hooked into \IPS\nexus\Support\Author\Member to change the name on the sidebar: //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { exit; } class hook479 extends _HOOK_CLASS_ { /** * Get name * * @return string */ public function name() { if( !\IPS\Member::loggedIn()->hasAcpRestriction( 'nexus', 'customers', 'customers_view_statistics' ) ) { return $this->customer->name; } else { return $this->customer->cm_name; } return parent::name(); } } and we hooked into \IPS\nexus\Customer to change the name on each reply: //<?php /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { exit; } class hook480 extends _HOOK_CLASS_ { /** * Get customer name * * @return string */ public function get_cm_name() { if( !\IPS\Member::loggedIn()->hasAcpRestriction( 'nexus', 'customers', 'customers_view_statistics' ) ) { return $this->name; } else { return ( $this->cm_first_name or $this->cm_last_name ) ? "{$this->cm_first_name} {$this->cm_last_name}" : $this->name; } return parent::get_cm_name(); } } In order to make full names display as their respective Display Name, just make sure the administrator you want to restrict has "Can view customer statistics?" disabled: I'm no developer, but I'm open to feedback in case you want this plugin to do something else. Hope it helps!
  15. There is no built-in switch for this. Could you provide a screenshot showing the exact areas where you see the first/last name? My feeling is this would likely be doable via a custom plugin. Possibly a switch that can be added to this group of admin restrictions: For the front end support module, this plugin would make it so the customer sees their display name instead of their first/last aka their "customer name": Change Commerce cm_name to name.xml
  16. Thanks for sharing. We ran into an issue with a customer not being able to register due to inexplicably failing the security check. Whitelisted their email and IP to no avail. Registered them manually then tried to reproduce it, but failed. I also wrote a plugin that adds the "Title" field to the Contact Us form, but the additional field sometimes causes captcha to fail as well, so I had to disable the plugin. Captcha is flaky in general in my experience, unfortunately.
  17. Hi, So, I installed Redis and configured it correctly as far as I could tell (including updating constants.php), however after some time, my AdminCP popped up a big red "Cache Not Working" message: I figured "I'll deal with this later", so I set my caching method back to what I was using before. Now the message is still there, and won't seem to go away even after running the support tool several times. I even went so far as to specify - No caching -, with File System as my storage method, and "Cache page output for guests" set to disabled, because that should be a fool-proof way to eliminate any caching issue. If I run the support tool, which clears the cache, I can see that the cache files in datastore are indeed being cleared out and regenerated, and as far as I can tell the site is working perfectly fine. Unfortunately I still have the message, and am just curious if it will go away on its own via some background task running, or if I should be submitting a ticket? Thanks for any insight!
  18. With InvisionCommunity 4.x.x maturing and talks of 5.x.x starting to come up, I'm starting to wonder whether Commerce will survive considering a "simple" feature like this hasn't been given any attention since 2015. It would go a long way for me, and my business, if topics like this could at least be given some token acknowledgement. I understand having limited engineering resources since I deal with this every day as well. Having to triage what gets attention and what doesn't, inadvertently sending the wrong message, etc. It would just be nice to get a "Thanks for the suggestion", or "we're considering it", or even a "no", so that we can stop wondering if posting feature requests are a worthwhile use of time, and perhaps consider other options.
  19. I got this working by modifying \IPS\nexus\Package\CustomField (the actual php file that relates to that class)! All I had to do was: - borrow the $form->add statements for pf_max_input and pf_input_format from \IPS\CustomField\CustomField - comment out the "unset" statements for those fields - Add the fields to the nexus_package_fields table in the database It works like a charm! Now to figure out how to do what I did in the form of a plugin or application since I don't really feel comfortable with the fact I edited the source files directly... Still hoping IPS will roll this into the core product, but I'm very thankful for the fact the framework was intuitive enough to allow this workaround!
  20. This is still not available as of 4.3.6: Commerce --> Store --> Custom Fields This is what is needed (specifically Default Value, Max Length, Custom Input Validation, and Apply text formatter): Pages --> Content --> Fields Fingers crossed for 4.4.
  21. Just ran into a similar problem, thought I'd share my solution here. When enabling IN_DEV, its important the correct boolean method is used. e.g., in my case: define('IN_DEV', 1); = nuked css define('IN_DEV', TRUE); = works fine
  22. Thanks! It does appear I was using the old template.xml (due to some customizations I didn't want to lose) with the new plugin. My mistake, thank you for the support!
×
×
  • Create New...