Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed unable to select "free method" in UPS backend configuration #4005

Merged
merged 1 commit into from
May 27, 2024
Merged

Fixed unable to select "free method" in UPS backend configuration #4005

merged 1 commit into from
May 27, 2024

Conversation

fballiano
Copy link
Contributor

Fixes #3976 (comment)

It was impossible to select a "free method" for UPS shipping method

Screenshot 2024-05-22 alle 21 43 58

@github-actions github-actions bot added Template : admin Relates to admin template Component: Usa Relates to Mage_Usa Component: Adminhtml Relates to Mage_Adminhtml labels May 22, 2024
@fballiano
Copy link
Contributor Author

@mingjyou @ragnese could you please take a look at this?

@ragnese
Copy link
Contributor

ragnese commented May 23, 2024

In the phtml file, what does line 113, this.originShipmentObj['default'] = <?php echo $_coreHelper->jsonEncode($defShipArr) ?>; actually do?

That's not a line that you changed, but I feel like I need to understand it. The function updateAllowedMethod is passed an argument, originShipmentTitle- when is that argument ever equal to 'default'? If it ever is equal to 'default' (maybe for a brand new installation?), should it use the REST API's codes instead of the XML codes, since the REST is the default now?

I wonder if the opening PHP code in the phtml file needs to be more thorough. Shouldn't we also filter the $storedAllowedMethods based on whatever the $storedUpsType ends up being?

I'll give this some more thought and play around with it later, and maybe do a PR against your branch tomorrow with my thoughts.

@fballiano
Copy link
Contributor Author

I don't really know but I wouldn't worry too much about that validation, this checking if the method is within that array is ok but also kinda too much, in the sense that the only way to save that "free method" is selecting in a combobox so we can also avoid validating it that strictly.

my solution is for sure dirty but.. if later we will remove all of the XML API code... I wouldn't put too much care now.

@ragnese
Copy link
Contributor

ragnese commented May 24, 2024

if later we will remove all of the XML API code... I wouldn't put too much care now.

Oh, yeah. Good point. In that case, I just have one suggestion that I'll put in the review I'm about to do.

@@ -23,9 +23,20 @@ public function toOptionArray()
{
$ups = Mage::getSingleton('usa/shipping_carrier_ups');
$arr = [];

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only small issue here is that a lot of the elements in this array will be repeats, which is going to make it several times bigger than it needs to be. An easy way to fix that would be to use the 'value' as a key in $arr, and then take just the values without the keys, like this:

    public function toOptionArray()
    {
        $ups = Mage::getSingleton('usa/shipping_carrier_ups');
        $arr = [];

        // necessary after the add of Rest API
        $origins = $ups->getCode('originShipment');
        foreach ($origins as $origin) {
            foreach ($origin as $k => $v) {
                $arr[$k] = ['value' => $k, 'label' => Mage::helper('usa')->__($v)];
            }
        }

        // old XML API codes
        foreach ($ups->getCode('method') as $k => $v) {
            $arr[$k] = ['value' => $k, 'label' => Mage::helper('usa')->__($v)];
        }

        return array_values($arr);
    }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes but we're talking 20 elements instead of 10, I don't think it's something that needs to be optimized.

plus it will be removed later this year

I'll take a look at it later but

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, it doesn't really matter. But, there's also the old saying "There's nothing more permanent than a temporary fix." :)

I went ahead and made an "approved" review. I don't feel strongly about this change, so it doesn't matter if you leave it as-is or tweak it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is true, but I will personally remove it when the XML API will go down.

I'm all for cleaning the old mess and probably half of my PRs are cleanups heheheh

@fballiano fballiano merged commit 9b52744 into OpenMage:main May 27, 2024
17 checks passed
@fballiano fballiano deleted the upsrest4 branch May 27, 2024 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: Adminhtml Relates to Mage_Adminhtml Component: Usa Relates to Mage_Usa Template : admin Relates to admin template
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants