/// <summary>
    /// Calculates the total weight for all packages in the requested shipment.
    /// </summary>
    /// <param name="requestedShipment"></param>
    /// <returns>Calculated weight if RequestedPackageLineItems in RequestedShiment, otherwise null.</returns>
    public static Weight?GetTotalWeight(this RequestedShipment requestedShipment)
    {
        if (requestedShipment != null && requestedShipment.RequestedPackageLineItems != null && requestedShipment.RequestedPackageLineItems.Length > 0)
        {
            var weight = new Weight {
                Units = requestedShipment.RequestedPackageLineItems[0].Weight.Units
            };

            foreach (var requestedPackageLineItem in requestedShipment.RequestedPackageLineItems)
            {
                weight.Value += requestedPackageLineItem.Weight.Value;
            }

            return(weight);
        }

        return(default);
Exemplo n.º 2
0
        private void BtnGo_Click(object sender, EventArgs e)
        {
            try
            {
                this.Enabled       = false;
                this.Cursor        = Cursors.WaitCursor;
                this.UseWaitCursor = true;

                GloWS glows = new GloWS(Common.username, Common.password, (Common.IsProduction ? Common.restProductionBaseUrl : Common.restTestingBaseUrl));

                RateQueryRequest  rqr = new RateQueryRequest();
                RateRequest       rr  = new RateRequest();
                RequestedShipment rs  = new RequestedShipment
                {
                    DropOffType                 = (cmbRequestCourier.SelectedIndex == 0 ? Enums.DropOffType.RequestCourier : Enums.DropOffType.RegularPickup)
                    , DeclaredValue             = ntxtDeclaredValue.Value
                    , DeclaredValueCurrencyCode = txtDeclaredCurrency.Text.Trim()
                    , NextBusinessDay           = Enums.YesNo.Yes
                    , ShipTimestamp             = DateTime.Now
                    , UnitOfMeasurement         = (cmbUOM.SelectedIndex == 0 ? Enums.UnitOfMeasurement.SI : Enums.UnitOfMeasurement.SU)
                    , PaymentInfo               = (Enums.TermsOfTrade)cmbTermsOfTrade.SelectedItem
                    , RequestValueAddedServices = (cbxShowAllServices.Checked ? Enums.YesNo.Yes : Enums.YesNo.No)
                    , Content = (cmbDutiable.SelectedIndex == 0 ? Enums.ShipmentType.Documents : Enums.ShipmentType.NonDocuments)
                };
                GloWS_REST_Library.Objects.RateQuery.Ship s = new GloWS_REST_Library.Objects.RateQuery.Ship();
                Address sa = new Address
                {
                    City          = txtShipperCity.Text.Trim()
                    , PostalCode  = txtShipperPostalCode.Text.Trim()
                    , USSateCode  = txtShipperUSState.Text.Trim()
                    , CountryCode = txtShipperCountry.Text.Trim()
                };
                s.Shipper = sa;
                Address ra = new Address
                {
                    City          = txtConsigneeCity.Text.Trim()
                    , PostalCode  = txtConsigneePostalCode.Text.Trim()
                    , USSateCode  = txtConsigneeUSState.Text.Trim()
                    , CountryCode = txtConsigneeCountry.Text.Trim()
                };
                s.Recipient = ra;
                rs.Ship     = s;
                // 961187381
                Billing b = new Billing
                {
                    ShipperAccountNumber   = txtAccountShipper.Text.Trim()
                    , BillingAccountNumber = txtAccountBilling.Text.Trim()
                    , ShippingPaymentType  = (rbtnPayShipper.Checked ? Enums.PaymentTypes.Shipper : Enums.PaymentTypes.Receiver)
                };
                rs.Billing = b;
                Packages p = new Packages();
                List <RequestedPackages> rps = new List <RequestedPackages>
                {
                    new RequestedPackages
                    {
                        PieceNumber = 1
                        , Weight    = new Weight {
                            Value = ntxtWeight.Value
                        }
                        , Dimensions = new Dimensions
                        {
                            Height   = ntxtHeight.Value
                            , Width  = ntxtWidth.Value
                            , Length = ntxtLength.Value
                        }
                    }
                };
                p.RequestedPackages = rps;
                rs.Packages         = p;

                if ((Enums.TermsOfTrade)cmbTermsOfTrade.SelectedItem
                    == Enums.TermsOfTrade.DDP)
                {
                    SpecialServices sss = new SpecialServices
                    {
                        Service = new List <SpecialService>()
                    };
                    sss.Service.Add(new SpecialService("DD"));
                    rs.SpecialServices = sss;
                }

                rr.RequestedShipment = rs;
                rqr.RateRequest      = rr;

                RateQueryResponse result = glows.RateQuery(rqr);

                _lastJsonRequest  = glows.LastJSONRequest;
                _lastJsonResponse = glows.LastJSONResponse;

                tvResult.Nodes.Clear();

                if (null == result.Services)
                {
                    if (null != result.RateResponse.Provider)
                    {
                        if (1 == result.RateResponse.Provider.Count)
                        {
                            Provider provider = result.RateResponse.Provider.First();
                            if (provider.Notification.Any())
                            {
                                foreach (Notification notificaiton in provider.Notification)
                                {
                                    tvResult.Nodes.Add(notificaiton.Code, notificaiton.Message);
                                }
                            }
                        }
                    }
                    else
                    {
                        // We got no results back
                        tvResult.Nodes.Add("NONE", "--NONE--");
                    }
                }
                else
                {
                    foreach (Service service in result.Services)
                    {
                        TreeNode tn = new TreeNode($"{service.ProductCode}: {service.TotalNet.Currency} {service.TotalNet.Amount:#,##0.00}");
                        if (null != service.Charges)
                        {
                            foreach (Charge charge in service.Charges.Charge)
                            {
                                TreeNode ctn =
                                    new TreeNode(
                                        $"{charge.ChargeType}");
                                TreeNode cctn =
                                    new TreeNode($"{service.Charges.Currency} {charge.ChargeAmount:#,##0.00}");
                                ctn.Nodes.Add(cctn);
                                tn.Nodes.Add(ctn);
                            }
                        }

                        tn.ExpandAll();
                        tvResult.Nodes.Add(tn);
                    }
                }

                tvResult.Nodes[0].EnsureVisible();
            }
            finally
            {
                this.Enabled       = true;
                this.Cursor        = Cursors.Default;
                this.UseWaitCursor = false;
            }
        }
        private void BtnGo_Click(object sender, EventArgs e)
        {
            try
            {
                this.Enabled       = false;
                this.Cursor        = Cursors.WaitCursor;
                this.UseWaitCursor = true;

                MyDHLAPI api = new MyDHLAPI(Common.CurrentCredentials["Username"]
                                            , Common.CurrentCredentials["Password"]
                                            , Common.CurrentRestBaseUrl);

                RateQueryRequest rqr = new RateQueryRequest();
                RateRequest      rr  = new RateRequest
                {
                    /*** Request Header ***/
                    Request = new Request()
                    {
                        ServiceHeader = new ServiceHeader()
                        {
                            ShippingSystemPlatform        = "MyDHL API Test App",
                            ShippingSystemPlatformVersion = Application.ProductVersion,
                            Plugin        = "MyDHL API C# Library",
                            PluginVersion = api.GetVersion()
                        }
                    }
                };

                RequestedShipment rs = new RequestedShipment
                {
                    DropOffType                 = (cmbRequestCourier.SelectedIndex == 0 ? Enums.DropOffType.RequestCourier : Enums.DropOffType.RegularPickup)
                    , DeclaredValue             = ntxtDeclaredValue.Value
                    , DeclaredValueCurrencyCode = txtDeclaredCurrency.Text.Trim()
                    , NextBusinessDay           = Enums.YesNo.Yes
                    , ShipTimestamp             = DateTime.Now
                    , UnitOfMeasurement         = (cmbUOM.SelectedIndex == 0 ? Enums.UnitOfMeasurement.SI : Enums.UnitOfMeasurement.SU)
                    , PaymentInfo               = (Enums.TermsOfTrade)cmbTermsOfTrade.SelectedItem
                    , RequestValueAddedServices = (cbxShowAllServices.Checked ? Enums.YesNo.Yes : Enums.YesNo.No)
                    , Content = (cmbDutiable.SelectedIndex == 0 ? Enums.ShipmentType.Documents : Enums.ShipmentType.NonDocuments)
                };
                MyDHLAPI_REST_Library.Objects.RateQuery.Ship    s  = new MyDHLAPI_REST_Library.Objects.RateQuery.Ship();
                MyDHLAPI_REST_Library.Objects.RateQuery.Address sa = new MyDHLAPI_REST_Library.Objects.RateQuery.Address
                {
                    City          = txtShipperCity.Text.Trim()
                    , PostalCode  = txtShipperPostalCode.Text.Trim()
                    , USSateCode  = txtShipperUSState.Text.Trim()
                    , CountryCode = txtShipperCountry.Text.Trim()
                };
                s.Shipper = sa;
                MyDHLAPI_REST_Library.Objects.RateQuery.Address ra = new MyDHLAPI_REST_Library.Objects.RateQuery.Address
                {
                    City          = txtConsigneeCity.Text.Trim()
                    , PostalCode  = txtConsigneePostalCode.Text.Trim()
                    , USSateCode  = txtConsigneeUSState.Text.Trim()
                    , CountryCode = txtConsigneeCountry.Text.Trim()
                };
                s.Recipient = ra;
                rs.Ship     = s;
                // 961187381
                Billing b = new Billing
                {
                    ShipperAccountNumber   = txtAccountShipper.Text.Trim()
                    , BillingAccountNumber = txtAccountBilling.Text.Trim()
                    , ShippingPaymentType  = (rbtnPayShipper.Checked ? Enums.PaymentTypes.Shipper : Enums.PaymentTypes.Receiver)
                };
                rs.Billing = b;
                Packages p = new Packages();
                List <RequestedPackages> rps = new List <RequestedPackages>
                {
                    new RequestedPackages
                    {
                        PieceNumber = 1
                        , Weight    = new Weight {
                            Value = ntxtWeight.Value
                        }
                        , Dimensions = new Dimensions
                        {
                            Height   = ntxtHeight.Value
                            , Width  = ntxtWidth.Value
                            , Length = ntxtLength.Value
                        }
                    }
                };
                p.RequestedPackages = rps;
                rs.Packages         = p;

                if ((Enums.TermsOfTrade)cmbTermsOfTrade.SelectedItem
                    == Enums.TermsOfTrade.DDP)
                {
                    SpecialServices sss = new SpecialServices
                    {
                        Service = new List <SpecialService>()
                    };
                    sss.Service.Add(new SpecialService("DD"));
                    rs.SpecialServices = sss;
                }

                rs.GetDetailedRateBreakdown = Enums.YesNo.Yes;

                rr.RequestedShipment = rs;
                rqr.RateRequest      = rr;

                RateQueryResponse result = null;
                try
                {
                    result = api.RateQuery(rqr);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"{ex.Message}", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    _lastJsonRequest  = api.LastRateQueryJSONRequest;
                    _lastJsonResponse = api.LastRateQueryJSONResponse;
                    return;
                }

                _lastJsonRequest  = api.LastRateQueryJSONRequest;
                _lastJsonResponse = api.LastRateQueryJSONResponse;

                tvResult.Nodes.Clear();

                if (null == result.Services)
                {
                    if (null != result.RateResponse.Provider)
                    {
                        if (1 == result.RateResponse.Provider.Count)
                        {
                            Provider provider = result.RateResponse.Provider.First();
                            if (provider.Notification.Any())
                            {
                                foreach (Notification notificaiton in provider.Notification)
                                {
                                    tvResult.Nodes.Add(notificaiton.Code, notificaiton.Message);
                                }
                            }
                        }
                    }
                    else
                    {
                        // We got no results back
                        tvResult.Nodes.Add("NONE", "--NONE--");
                    }
                }
                else
                {
                    TreeNode servicesOkToShow         = new TreeNode("Show on website");
                    TreeNode servicesNeedingAgreement = new TreeNode("Pre-agreement required");
                    foreach (Service service in result.Services)
                    {
                        TreeNode tn = new TreeNode($"{service.ProductCode}: {service.TotalNet.Currency} {service.TotalNet.Amount:#,##0.00}");
                        tn.Nodes.Add($"Transit time: {service.TotalTransitDays} day(s)");
                        if (null != service.Charges)
                        {
                            foreach (Charge charge in service.Charges.Charge)
                            {
                                TreeNode ctn = null;
                                if (string.IsNullOrEmpty(charge.ChargeCode))
                                {
                                    ctn = new TreeNode($"{charge.ChargeType}");
                                }
                                else
                                {
                                    ctn = new TreeNode($"({charge.ChargeCode}) {charge.ChargeType}");
                                }

                                if (!string.IsNullOrEmpty(service.Charges.Currency) &&
                                    null != charge.ChargeAmount)
                                {
                                    TreeNode cctn =
                                        new TreeNode($"{service.Charges.Currency} {charge.ChargeAmount:#,##0.00}");
                                    ctn.Nodes.Add(cctn);
                                }
                                tn.Nodes.Add(ctn);
                            }
                        }

                        tn.ExpandAll();

                        if (service.CustomerAgreementInd == Enums.YesNo.No)
                        {
                            servicesOkToShow.Nodes.Add(tn);
                        }
                        else
                        {
                            servicesNeedingAgreement.Nodes.Add(tn);
                        }
                    }

                    servicesOkToShow.ExpandAll();
                    servicesNeedingAgreement.ExpandAll();

                    tvResult.Nodes.Add(servicesOkToShow);
                    tvResult.Nodes.Add(servicesNeedingAgreement);
                }

                tvResult.Nodes[0].EnsureVisible();
            }
            finally
            {
                this.Enabled       = true;
                this.Cursor        = Cursors.Default;
                this.UseWaitCursor = false;
            }
        }
 public void SetRequestedShipment(RequestedShipment requestedShipment)
 {
     _request.RequestedShipment = requestedShipment;
 }