예제 #1
0
        public GenericResult CreateTransferShipmentFor(RequisitionViewModel requisition)
        {
            GenericResult response = new GenericResult();

            if (requisition != null && requisition.Lines != null && requisition.Lines.Count > 0)
            {
                try
                {
                    TransferShipment transferShipment = new TransferShipment();
                    transferShipment.ProjectNo        = requisition.ProjectNo;
                    transferShipment.Comments         = requisition.Comments;
                    transferShipment.FunctionalAreaNo = requisition.FunctionalAreaCode;
                    transferShipment.RequisitionNo    = requisition.RequisitionNo;
                    transferShipment.Lines            = requisition.Lines.Select(line => new TransferShipmentLine()
                    {
                        ProductNo              = line.Code,
                        ProductDescription     = line.Description,
                        Quantity               = line.QuantityToProvide,
                        UnitOfMeasureNo        = line.UnitMeasureCode,
                        UnitCost               = line.UnitCost,
                        RegionNo               = line.RegionCode,
                        FunctionalAreaNo       = line.FunctionalAreaCode,
                        CenterResponsibilityNo = line.CenterResponsibilityCode
                    }).ToList();

                    Task <WSTransferShipmentHeader.Create_Result> createTransferShipHeaderTask = NAVTransferShipmentService.CreateHeaderAsync(transferShipment, configws);
                    createTransferShipHeaderTask.Wait();
                    if (createTransferShipHeaderTask.IsCompletedSuccessfully)
                    {
                        transferShipment.TransferShipmentNo = createTransferShipHeaderTask.Result.WSShipmentDocHeader.Nº_Guia_Transporte;

                        Task <WSTransferShipmentLine.CreateMultiple_Result> createTransferShipLinesTask = NAVTransferShipmentService.CreateLinesAsync(transferShipment, configws);
                        createTransferShipLinesTask.Wait();
                        if (createTransferShipLinesTask.IsCompletedSuccessfully)
                        {
                            Task <WSGenericCodeUnit.FxPostShipmentDoc_Result> createTransferShipDocTask = WSGeneric.CreateTransferShipment(transferShipment.TransferShipmentNo, configws);
                            createTransferShipDocTask.Wait();
                            if (createTransferShipDocTask.IsCompletedSuccessfully)
                            {
                                response.CompletedSuccessfully = true;
                                response.ResultValue           = createTransferShipDocTask.Result.return_value;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    response.ErrorMessage = ex.Message;
                }
            }
            else
            {
                response.ErrorMessage = "A requisição é nula ou não tem linhas.";
            }
            return(response);
        }
        public static async Task <WSTransferShipmentLine.CreateMultiple_Result> CreateLinesAsync(TransferShipment transferShipment, NAVWSConfigurations WSConfigurations)
        {
            if (transferShipment == null)
            {
                throw new ArgumentNullException("transferShipment");
            }
            int counter = 0;

            WSTransferShipmentLine.CreateMultiple navCreate = new WSTransferShipmentLine.CreateMultiple();
            navCreate.WSShipmentDocLine_List = transferShipment.Lines.Select(line =>
                                                                             new WSTransferShipmentLine.WSShipmentDocLine()
            {
                Nº_Linha          = (counter += 10000),
                Nº_LinhaSpecified = true,
                Tipo                = WSTransferShipmentLine.Tipo.Produto,
                TipoSpecified       = true,
                No_projecto         = transferShipment.ProjectNo,
                No                  = line.ProductNo,
                Descricao           = line.ProductDescription,
                Nº_Documento        = transferShipment.TransferShipmentNo,
                Quantidade          = line.Quantity.HasValue ? line.Quantity.Value : 0,
                QuantidadeSpecified = true,
                Unit_Cost           = line.UnitCost.HasValue ? line.UnitCost.Value : 0,
                Unit_CostSpecified  = true,
            })
                                               .ToArray();

            //Configure NAV Client
            EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_TransferShipmentLine_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WSTransferShipmentLine.WSShipmentDocLine_PortClient ws_Client = new WSTransferShipmentLine.WSShipmentDocLine_PortClient(navWSBinding, ws_URL);
            ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            ws_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);

            //try
            //{
            return(await ws_Client.CreateMultipleAsync(navCreate));

            //}
            //catch (Exception ex)
            //{
            //    throw;
            //}
        }
        public static async Task <WSTransferShipmentHeader.Create_Result> CreateHeaderAsync(TransferShipment transferShipment, NAVWSConfigurations WSConfigurations)
        {
            if (transferShipment == null)
            {
                throw new ArgumentNullException("transferShipment");
            }

            WSTransferShipmentHeader.Create navCreate = new WSTransferShipmentHeader.Create()
            {
                WSShipmentDocHeader = new WSTransferShipmentHeader.WSShipmentDocHeader()
                {
                    Nº_Projecto = transferShipment.ProjectNo,

                    FunctionAreaCode20         = transferShipment.FunctionalAreaNo,
                    RegionCode20               = transferShipment.RegionNo,
                    ResponsabilityCenterCode20 = transferShipment.ResponsibilityCenterNo,
                    Nº_Requisição              = transferShipment.RequisitionNo,
                    Observações            = transferShipment.Comments,
                    Cod_Postal_Descarga    = "4700-301",
                    Post_Code              = "4700-301",
                    Local_Descarga1        = "Local_Descarga1",
                    Morada_Cliente         = "Morada_Cliente",
                    Data_Descarga          = DateTime.Now,
                    Data_DescargaSpecified = true
                }
            };

            //Configure NAV Client
            EndpointAddress ws_URL = new EndpointAddress(WSConfigurations.WS_TransferShipmentHeader_URL.Replace("Company", WSConfigurations.WS_User_Company));

            WSTransferShipmentHeader.WSShipmentDocHeader_PortClient ws_Client = new WSTransferShipmentHeader.WSShipmentDocHeader_PortClient(navWSBinding, ws_URL);
            ws_Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Delegation;
            ws_Client.ClientCredentials.Windows.ClientCredential          = new NetworkCredential(WSConfigurations.WS_User_Login, WSConfigurations.WS_User_Password, WSConfigurations.WS_User_Domain);

            //try
            //{
            return(await ws_Client.CreateAsync(navCreate));

            //}
            //catch (Exception ex)
            //{
            //    throw;
            //}
        }