Enhanced Shipping instructions and Custom PO for import
This commit is contained in:
parent
5c6fc08bf3
commit
f2aee9645d
@ -25,8 +25,6 @@ namespace CPRNIMS.Domain.Services.Account
|
|||||||
_roleManager = roleManager;
|
_roleManager = roleManager;
|
||||||
}
|
}
|
||||||
public async Task<List<object>> GetAllUsersProfile()
|
public async Task<List<object>> GetAllUsersProfile()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var usersWithRolesAndAttachments = await (from user in _userManager.Users
|
var usersWithRolesAndAttachments = await (from user in _userManager.Users
|
||||||
join userRole in _dbContext.IdentityUserRoles on user.Id equals userRole.UserId into userRoles
|
join userRole in _dbContext.IdentityUserRoles on user.Id equals userRole.UserId into userRoles
|
||||||
@ -39,8 +37,8 @@ namespace CPRNIMS.Domain.Services.Account
|
|||||||
{
|
{
|
||||||
user.Id,
|
user.Id,
|
||||||
Role = r != null ? r.Name ?? "N/A" : "N/A",
|
Role = r != null ? r.Name ?? "N/A" : "N/A",
|
||||||
URL = a != null ? a.URL ?? "N/A" : "N/A",
|
URL = a != null ? a.URL ?? "404userImage" : "404userImage",
|
||||||
FileName = a != null ? a.FileName ?? "N/A" : "N/A",
|
FileName = a != null ? a.FileName ?? "404userImage.jpg" : "404userImage.jpg",
|
||||||
user.Company,
|
user.Company,
|
||||||
user.DepartmentId,
|
user.DepartmentId,
|
||||||
user.UserName,
|
user.UserName,
|
||||||
@ -59,12 +57,6 @@ namespace CPRNIMS.Domain.Services.Account
|
|||||||
|
|
||||||
return usersWithRolesAndAttachments.Cast<object>().ToList();
|
return usersWithRolesAndAttachments.Cast<object>().ToList();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
ex.ToString();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public async Task AssignUserRole(RegisterModel registerModel)
|
public async Task AssignUserRole(RegisterModel registerModel)
|
||||||
{
|
{
|
||||||
var user = await _userManager.FindByIdAsync(registerModel.Id);
|
var user = await _userManager.FindByIdAsync(registerModel.Id);
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using CPRNIMS.Domain.Contracts.Items;
|
using CPRNIMS.Domain.Contracts.Items;
|
||||||
using CPRNIMS.Infrastructure.Database;
|
using CPRNIMS.Infrastructure.Database;
|
||||||
using CPRNIMS.Infrastructure.Dto.Canvass;
|
|
||||||
using CPRNIMS.Infrastructure.Dto.Items;
|
using CPRNIMS.Infrastructure.Dto.Items;
|
||||||
using CPRNIMS.Infrastructure.Entities.Account;
|
using CPRNIMS.Infrastructure.Entities.Account;
|
||||||
using CPRNIMS.Infrastructure.Entities.Items;
|
using CPRNIMS.Infrastructure.Entities.Items;
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
using CPRNIMS.Infrastructure.Database;
|
using CPRNIMS.Infrastructure.Database;
|
||||||
using CPRNIMS.Infrastructure.Dto.Canvass.Response;
|
using CPRNIMS.Infrastructure.Dto.Canvass.Response;
|
||||||
using CPRNIMS.Infrastructure.Dto.PO;
|
using CPRNIMS.Infrastructure.Dto.PO;
|
||||||
using CPRNIMS.Infrastructure.Dto.PR;
|
|
||||||
using CPRNIMS.Infrastructure.Entities.Canvass;
|
using CPRNIMS.Infrastructure.Entities.Canvass;
|
||||||
using CPRNIMS.Infrastructure.Entities.Common;
|
using CPRNIMS.Infrastructure.Entities.Common;
|
||||||
using CPRNIMS.Infrastructure.Entities.LocalDb.NonInvent;
|
using CPRNIMS.Infrastructure.Entities.LocalDb.NonInvent;
|
||||||
@ -494,7 +493,7 @@ namespace CPRNIMS.Domain.Services.PO
|
|||||||
await _dbContext.Database
|
await _dbContext.Database
|
||||||
.ExecuteSqlRawAsync("EXEC PostPutCustomPO @UserId,@POTypeId,@PONumber,@PRDetailsId,@Specification,@PRNo,@PORemarks,@IncoTermsId," +
|
.ExecuteSqlRawAsync("EXEC PostPutCustomPO @UserId,@POTypeId,@PONumber,@PRDetailsId,@Specification,@PRNo,@PORemarks,@IncoTermsId," +
|
||||||
$"@PODId,@ProfInvoiceNo,@ProfInvoiceDate,@PaymentTermsId,@ShippingInstructionId,@SupplierId,@DeliveryDate,@Discount,@Amount," +
|
$"@PODId,@ProfInvoiceNo,@ProfInvoiceDate,@PaymentTermsId,@ShippingInstructionId,@SupplierId,@DeliveryDate,@Discount,@Amount," +
|
||||||
$"@UnitPrice,@Quantity,@DeliverTo, @MessCode OUTPUT, @Message OUTPUT",
|
$"@UnitPrice,@Quantity,@DeliverTo,@CountryOrigin, @MessCode OUTPUT, @Message OUTPUT",
|
||||||
new SqlParameter("@UserId", pODto.UserId),
|
new SqlParameter("@UserId", pODto.UserId),
|
||||||
new SqlParameter("@POTypeId", pODto.POTypeId),
|
new SqlParameter("@POTypeId", pODto.POTypeId),
|
||||||
new SqlParameter("@PONumber", formattedPONumber),
|
new SqlParameter("@PONumber", formattedPONumber),
|
||||||
@ -516,6 +515,7 @@ namespace CPRNIMS.Domain.Services.PO
|
|||||||
new SqlParameter("@UnitPrice", pODto.UnitPrice),
|
new SqlParameter("@UnitPrice", pODto.UnitPrice),
|
||||||
new SqlParameter("@Quantity", pODto.Quantity),
|
new SqlParameter("@Quantity", pODto.Quantity),
|
||||||
new SqlParameter("@DeliverTo", pODto.DeliverTo),
|
new SqlParameter("@DeliverTo", pODto.DeliverTo),
|
||||||
|
new SqlParameter("@CountryOrigin", pODto.CountryOrigin ?? "N/A"),
|
||||||
messCode,
|
messCode,
|
||||||
message);
|
message);
|
||||||
|
|
||||||
@ -544,7 +544,7 @@ namespace CPRNIMS.Domain.Services.PO
|
|||||||
await _dbContext.Database
|
await _dbContext.Database
|
||||||
.ExecuteSqlRawAsync("EXEC PutExistingPO @UserId,@POTypeId,@PONumber,@PRDetailsId,@Specification,@PRNo,@PORemarks,@IncoTermsId," +
|
.ExecuteSqlRawAsync("EXEC PutExistingPO @UserId,@POTypeId,@PONumber,@PRDetailsId,@Specification,@PRNo,@PORemarks,@IncoTermsId," +
|
||||||
$"@PODId,@ProfInvoiceNo,@ProfInvoiceDate,@PaymentTermsId,@ShippingInstructionId,@SupplierId,@DeliveryDate,@Discount,@Amount," +
|
$"@PODId,@ProfInvoiceNo,@ProfInvoiceDate,@PaymentTermsId,@ShippingInstructionId,@SupplierId,@DeliveryDate,@Discount,@Amount," +
|
||||||
$"@UnitPrice,@Quantity,@DeliverTo,@IsRemoved, @MessCode OUTPUT, @Message OUTPUT",
|
$"@UnitPrice,@Quantity,@DeliverTo,@IsRemoved,@CountryOrigin, @MessCode OUTPUT, @Message OUTPUT",
|
||||||
new SqlParameter("@UserId", pODto.UserId),
|
new SqlParameter("@UserId", pODto.UserId),
|
||||||
new SqlParameter("@POTypeId", pODto.POTypeId),
|
new SqlParameter("@POTypeId", pODto.POTypeId),
|
||||||
new SqlParameter("@PONumber", pODto.PONo),
|
new SqlParameter("@PONumber", pODto.PONo),
|
||||||
@ -567,6 +567,7 @@ namespace CPRNIMS.Domain.Services.PO
|
|||||||
new SqlParameter("@Quantity", pODto.Quantity),
|
new SqlParameter("@Quantity", pODto.Quantity),
|
||||||
new SqlParameter("@DeliverTo", pODto.DeliverTo),
|
new SqlParameter("@DeliverTo", pODto.DeliverTo),
|
||||||
new SqlParameter("@IsRemoved", isRemoved),
|
new SqlParameter("@IsRemoved", isRemoved),
|
||||||
|
new SqlParameter("@CountryOrigin", pODto.CountryOrigin ?? "N/A"),
|
||||||
messCode,
|
messCode,
|
||||||
message);
|
message);
|
||||||
|
|
||||||
@ -633,7 +634,8 @@ namespace CPRNIMS.Domain.Services.PO
|
|||||||
DeliveryDate = PODto.DeliveryDate,
|
DeliveryDate = PODto.DeliveryDate,
|
||||||
DeliverTo = PODto.DeliverTo ?? "N/A",
|
DeliverTo = PODto.DeliverTo ?? "N/A",
|
||||||
Specification = specification,
|
Specification = specification,
|
||||||
IsUpdate = PODto.IsUpdate
|
IsUpdate = PODto.IsUpdate,
|
||||||
|
CountryOrigin=PODto.CountryOrigin
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public async Task<DocRequired> PostSuppDocRequirements(PODto poDto)
|
public async Task<DocRequired> PostSuppDocRequirements(PODto poDto)
|
||||||
|
|||||||
@ -115,5 +115,6 @@ namespace CPRNIMS.Infrastructure.Dto.PO
|
|||||||
public DateTime From { get; set; }
|
public DateTime From { get; set; }
|
||||||
public string? OtherChargesName { get; set; }
|
public string? OtherChargesName { get; set; }
|
||||||
public string? IncotermsName { get; set; }
|
public string? IncotermsName { get; set; }
|
||||||
|
public string? CountryOrigin { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,13 +18,10 @@ namespace CPRNIMS.Infrastructure.Entities.Items
|
|||||||
public string? UserId { get; set; }
|
public string? UserId { get; set; }
|
||||||
public string? ItemName { get; set; }
|
public string? ItemName { get; set; }
|
||||||
public string? ItemCategoryName { get; set; }
|
public string? ItemCategoryName { get; set; }
|
||||||
public byte PRTypeId { get; set; }
|
public string? ItemDescription { get; set; }
|
||||||
public decimal Qty { get; set; }
|
public decimal Qty { get; set; }
|
||||||
public int CartItemCount { get; set; }
|
public int CartItemCount { get; set; }
|
||||||
public int UOMId { get; set; }
|
public int UOMId { get; set; }
|
||||||
public int ItemColorId { get; set; }
|
|
||||||
public short ItemCategoryId { get; set; }
|
|
||||||
public byte PackagingTypeId { get; set; }
|
|
||||||
public long ItemAttachId { get; set; }
|
public long ItemAttachId { get; set; }
|
||||||
public string? CreatedBy { get; set; }
|
public string? CreatedBy { get; set; }
|
||||||
public DateTime CreatedDate { get; set; }
|
public DateTime CreatedDate { get; set; }
|
||||||
|
|||||||
@ -21,7 +21,6 @@ namespace CPRNIMS.Infrastructure.Entities.PO
|
|||||||
public string? ItemName { get; set; }
|
public string? ItemName { get; set; }
|
||||||
public string? ItemDescription { get; set; }
|
public string? ItemDescription { get; set; }
|
||||||
public string? UOMName { get; set; }
|
public string? UOMName { get; set; }
|
||||||
public bool IsActive { get; set; }
|
|
||||||
public long ItemNo { get; set; }
|
public long ItemNo { get; set; }
|
||||||
public decimal Qty { get; set; }
|
public decimal Qty { get; set; }
|
||||||
public string? Remarks { get; set; }
|
public string? Remarks { get; set; }
|
||||||
@ -44,12 +43,13 @@ namespace CPRNIMS.Infrastructure.Entities.PO
|
|||||||
public DateTime ProfInvoiceDate { get; set; }
|
public DateTime ProfInvoiceDate { get; set; }
|
||||||
public string? PortOfDischarge { get; set; }
|
public string? PortOfDischarge { get; set; }
|
||||||
public string? PaymentTerms { get; set; }
|
public string? PaymentTerms { get; set; }
|
||||||
public string? ShippingInstruction { get; set; }
|
public byte ShippingInstructionId { get; set; }
|
||||||
public string? DeliverTo { get; set; }
|
public string? DeliverTo { get; set; }
|
||||||
public string? IncoTerms { get; set; }
|
public string? IncoTerms { get; set; }
|
||||||
public string? ProfInvoiceNo { get; set; }
|
public string? ProfInvoiceNo { get; set; }
|
||||||
public string? DocRequirements { get; set; }
|
public string? DocRequirements { get; set; }
|
||||||
public string? AmountInWords { get; set; }
|
public string? AmountInWords { get; set; }
|
||||||
public decimal Amount { get; set; }
|
public decimal Amount { get; set; }
|
||||||
|
public string? CountryOrigin { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,9 +30,11 @@ namespace CPRNIMS.Infrastructure.Entities.PO
|
|||||||
public string? UserId { get; set; }
|
public string? UserId { get; set; }
|
||||||
public byte Status { get; set; }
|
public byte Status { get; set; }
|
||||||
public byte PaymentTermsId { get; set; }
|
public byte PaymentTermsId { get; set; }
|
||||||
|
public byte ShippingInstructionId { get; set; }
|
||||||
public byte PODId { get; set; }
|
public byte PODId { get; set; }
|
||||||
public byte POTypeId { get; set; }
|
public byte POTypeId { get; set; }
|
||||||
public byte IncoTermsId { get; set; }
|
public byte IncoTermsId { get; set; }
|
||||||
public string? IncotermsName { get; set; }
|
public string? IncotermsName { get; set; }
|
||||||
|
public string? CountryOrigin { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,6 +140,7 @@ namespace CPRNIMS.Infrastructure.ViewModel.PO
|
|||||||
public string? Password { get; set; }
|
public string? Password { get; set; }
|
||||||
public string? Server { get; set; }
|
public string? Server { get; set; }
|
||||||
public string? AggreQty { get; set; }
|
public string? AggreQty { get; set; }
|
||||||
|
public string? CountryOrigin { get; set; }
|
||||||
public DocRequirementList? DocRequiredList { get; set; }
|
public DocRequirementList? DocRequiredList { get; set; }
|
||||||
public POChargesList? OtherChargesList { get; set; }
|
public POChargesList? OtherChargesList { get; set; }
|
||||||
public PRItemList? PRItemList { get; set; }
|
public PRItemList? PRItemList { get; set; }
|
||||||
|
|||||||
@ -4,7 +4,6 @@ using CPRNIMS.Domain.Services.Account;
|
|||||||
using CPRNIMS.Infrastructure.Dto.Account;
|
using CPRNIMS.Infrastructure.Dto.Account;
|
||||||
using CPRNIMS.Infrastructure.Entities.Account;
|
using CPRNIMS.Infrastructure.Entities.Account;
|
||||||
using CPRNIMS.Infrastructure.Entities.Common;
|
using CPRNIMS.Infrastructure.Entities.Common;
|
||||||
using CPRNIMS.Infrastructure.Helper;
|
|
||||||
using CPRNIMS.Infrastructure.Models;
|
using CPRNIMS.Infrastructure.Models;
|
||||||
using CPRNIMS.Infrastructure.Models.Account;
|
using CPRNIMS.Infrastructure.Models.Account;
|
||||||
using CPRNIMS.Infrastructure.Models.Common;
|
using CPRNIMS.Infrastructure.Models.Common;
|
||||||
@ -19,7 +18,7 @@ using System.Security.Claims;
|
|||||||
|
|
||||||
namespace CPRNIMS.WebApi.Controllers.Account
|
namespace CPRNIMS.WebApi.Controllers.Account
|
||||||
{
|
{
|
||||||
[Security.AuthorizeRoles("Account")]
|
[AuthorizeRoles("Account")]
|
||||||
public class AccountController : Base.BaseController
|
public class AccountController : Base.BaseController
|
||||||
{
|
{
|
||||||
private readonly ErrorMessageService _errorMessageService;
|
private readonly ErrorMessageService _errorMessageService;
|
||||||
@ -149,8 +148,6 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
|
|
||||||
[HttpGet("GetUserById/{userId}")]
|
[HttpGet("GetUserById/{userId}")]
|
||||||
public async Task<IActionResult> GetUserProfileById(string userId)
|
public async Task<IActionResult> GetUserProfileById(string userId)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var userWithUrl = await _userManager.Users
|
var userWithUrl = await _userManager.Users
|
||||||
.Include(u => u.Attachment)
|
.Include(u => u.Attachment)
|
||||||
@ -161,7 +158,6 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
u.UserName,
|
u.UserName,
|
||||||
u.FullName,
|
u.FullName,
|
||||||
u.Email,
|
u.Email,
|
||||||
// u.Role,
|
|
||||||
u.Department,
|
u.Department,
|
||||||
u.Company,
|
u.Company,
|
||||||
u.LockoutEnabled,
|
u.LockoutEnabled,
|
||||||
@ -177,24 +173,13 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
|
|
||||||
if (userWithUrl == null)
|
if (userWithUrl == null)
|
||||||
{
|
{
|
||||||
// Handle the case where the user with the specified ID is not found
|
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(userWithUrl);
|
return Ok(userWithUrl);
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
[HttpGet("GetAllUser")]
|
[HttpGet("GetAllUser")]
|
||||||
public async Task<IActionResult> GetAllUsers()
|
public async Task<IActionResult> GetAllUsers()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var usersWithUrl = await _userClaimsManager.GetAllUsersProfile();
|
var usersWithUrl = await _userClaimsManager.GetAllUsersProfile();
|
||||||
|
|
||||||
@ -204,29 +189,18 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Ok(usersWithUrl);
|
return Ok(usersWithUrl);
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
[HttpPost("GetUserRolesClaims")]
|
[HttpPost("GetUserRolesClaims")]
|
||||||
public async Task<IActionResult> GetUserRolesClaims([FromBody] LoginModel model)
|
public async Task<IActionResult> GetUserRolesClaims([FromBody] LoginModel model)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var user = await _userManager.Users
|
var user = await _userManager.Users
|
||||||
.Include(u => u.Department) // Include the Department
|
.Include(u => u.Department)
|
||||||
.SingleOrDefaultAsync(u => u.UserName == model.Username.ToLower());
|
.SingleOrDefaultAsync(u => u.UserName == model.Username.ToLower());
|
||||||
|
|
||||||
if (user != null && await _userManager.CheckPasswordAsync(user, model.Password))
|
if (user != null && await _userManager.CheckPasswordAsync(user, model.Password))
|
||||||
{
|
{
|
||||||
var userRoles = await _userManager.GetRolesAsync(user);
|
var userRoles = await _userManager.GetRolesAsync(user);
|
||||||
|
|
||||||
// Fetch the full role details from the Roles table
|
|
||||||
var roleDetails = await _roleManager.Roles
|
var roleDetails = await _roleManager.Roles
|
||||||
.Where(r => userRoles.Contains(r.Name))
|
.Where(r => userRoles.Contains(r.Name))
|
||||||
.Select(r => new { r.Id, r.Name })
|
.Select(r => new { r.Id, r.Name })
|
||||||
@ -266,18 +240,9 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
}
|
}
|
||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message + "GetUserRolesClaims", "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("GetTClaim")]
|
[HttpPost("GetTClaim")]
|
||||||
public async Task<IActionResult> GetTClaim([FromBody] LoginModel model)
|
public async Task<IActionResult> GetTClaim([FromBody] LoginModel model)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var user = await _userManager.FindByNameAsync(model.Username.ToLower());
|
var user = await _userManager.FindByNameAsync(model.Username.ToLower());
|
||||||
|
|
||||||
@ -325,14 +290,6 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Unauthorized();
|
return Unauthorized();
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("register")]
|
[HttpPost("register")]
|
||||||
@ -404,54 +361,26 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
|
|
||||||
[HttpPost("GetDepartment")]
|
[HttpPost("GetDepartment")]
|
||||||
public async Task<IActionResult> GetDepartment()
|
public async Task<IActionResult> GetDepartment()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var user = await _department.GetDepartment();
|
var user = await _department.GetDepartment();
|
||||||
|
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
|
||||||
return Ok(user);
|
return Ok(user);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[HttpPost("GetUserRights")]
|
[HttpPost("GetUserRights")]
|
||||||
public async Task<IActionResult> GetUserRights(AccountDto accountDto)
|
public async Task<IActionResult> GetUserRights(AccountDto accountDto)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var user = await _account.GetUserRights(accountDto);
|
var user = await _account.GetUserRights(accountDto);
|
||||||
|
|
||||||
if (user != null)
|
if (user != null)
|
||||||
{
|
|
||||||
return Ok(user);
|
return Ok(user);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
[HttpPost("PutPostUserAccess")]
|
[HttpPost("PutPostUserAccess")]
|
||||||
public async Task<IActionResult> PutPostUserAccess([FromBody] UserRightsVM viewModel)
|
public async Task<IActionResult> PutPostUserAccess([FromBody] UserRightsVM viewModel)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var itemDto = new AccountDto();
|
var itemDto = new AccountDto();
|
||||||
if (viewModel.UserRightsList != null)
|
if (viewModel.UserRightsList != null)
|
||||||
@ -474,25 +403,10 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
}
|
}
|
||||||
return BadRequest(new { success = false, messCode = 0, message = "Your email has not yet been configured. Please go to the SMTP page." });
|
return BadRequest(new { success = false, messCode = 0, message = "Your email has not yet been configured. Please go to the SMTP page." });
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message + "PutPostUserAccess", "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost("CreateUpdateRole")]
|
[HttpPost("CreateUpdateRole")]
|
||||||
public async Task<IActionResult> CreateUpdateRole([FromBody] UserRoleModel model)
|
public async Task<IActionResult> CreateUpdateRole([FromBody] UserRoleModel model)
|
||||||
{
|
{
|
||||||
try
|
|
||||||
{
|
|
||||||
/* IdentityRole userRole = new()
|
|
||||||
{
|
|
||||||
Id=model.Id,
|
|
||||||
Name = model.Name,
|
|
||||||
};*/
|
|
||||||
// Check if a role with the given ID exists
|
|
||||||
var existingRole = await _roleManager.FindByIdAsync(model.Id);
|
var existingRole = await _roleManager.FindByIdAsync(model.Id);
|
||||||
if (existingRole != null)
|
if (existingRole != null)
|
||||||
{
|
{
|
||||||
@ -516,12 +430,5 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
}
|
}
|
||||||
return Ok(new ResponseObject { statusResponse = "Success", message = "Role created successfully!" });
|
return Ok(new ResponseObject { statusResponse = "Success", message = "Role created successfully!" });
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
await PostErrorMessage(message, "WebApi");
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,7 @@ namespace CPRNIMS.WebApi.Controllers.Account
|
|||||||
return Ok(new
|
return Ok(new
|
||||||
{
|
{
|
||||||
token,
|
token,
|
||||||
expiresAt= DateTime.UtcNow.AddMinutes(30),
|
expiresAt= DateTime.UtcNow.AddHours(2),
|
||||||
userId = user.Id,
|
userId = user.Id,
|
||||||
userName = user.UserName,
|
userName = user.UserName,
|
||||||
fullName = user.FullName,
|
fullName = user.FullName,
|
||||||
|
|||||||
@ -11,11 +11,14 @@ namespace CPRNIMS.WebApps.Controllers.Account
|
|||||||
{
|
{
|
||||||
private readonly IAccount _account;
|
private readonly IAccount _account;
|
||||||
List<UserRightsVM>? response;
|
List<UserRightsVM>? response;
|
||||||
|
private readonly IConfiguration _configuration;
|
||||||
public AccountController(IWebHostEnvironment webHostEnvironment,
|
public AccountController(IWebHostEnvironment webHostEnvironment,
|
||||||
IAccount account,ErrorLogHelper errorMessageService,TokenHelper tokenHelper
|
IAccount account,ErrorLogHelper errorMessageService,TokenHelper tokenHelper,
|
||||||
|
IConfiguration configuration
|
||||||
) : base(errorMessageService, webHostEnvironment,tokenHelper, account)
|
) : base(errorMessageService, webHostEnvironment,tokenHelper, account)
|
||||||
{
|
{
|
||||||
_account = account;
|
_account = account;
|
||||||
|
_configuration = configuration;
|
||||||
}
|
}
|
||||||
#region Change Password
|
#region Change Password
|
||||||
public async Task<IActionResult> SendOTPByEmail(EmailMessageDetailsVM model)
|
public async Task<IActionResult> SendOTPByEmail(EmailMessageDetailsVM model)
|
||||||
@ -199,18 +202,10 @@ namespace CPRNIMS.WebApps.Controllers.Account
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public async Task<IActionResult> GetAllUsers()
|
public async Task<IActionResult> GetAllUsers()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var userResponse = await _account.GetAllUserAsync(GetUser());
|
var userResponse = await _account.GetAllUserAsync(GetUser());
|
||||||
return Json(new { data = userResponse });
|
userResponse[0].URL = _configuration["LLI:BaseUrl"] ?? "https://llipurchasingnoninventory.com:8080/";
|
||||||
}
|
return GetResponse(userResponse);
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
|
|
||||||
return Json(new { data = "No Data" }); // Return empty array instead of "No Data" string
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public async Task<IActionResult> GetDepartment()
|
public async Task<IActionResult> GetDepartment()
|
||||||
{
|
{
|
||||||
@ -242,20 +237,12 @@ namespace CPRNIMS.WebApps.Controllers.Account
|
|||||||
return Json(new { data = "No Data" });
|
return Json(new { data = "No Data" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public async Task<IActionResult> GetUserRights(UserRightsVM viewModels)
|
[HttpGet]
|
||||||
|
public async Task<IActionResult> GetUserRights(UserRightsVM viewModel)
|
||||||
{
|
{
|
||||||
try
|
response = await _account.GetUserRights(GetUser(), viewModel);
|
||||||
{
|
|
||||||
response = await _account.GetUserRights(GetUser(), viewModels);
|
|
||||||
return GetResponse(response);
|
return GetResponse(response);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
var message = ex.InnerException?.ToString() ?? ex.Message.ToString();
|
|
||||||
|
|
||||||
return Json(new { data = "No Data" });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
#region Views
|
#region Views
|
||||||
public async Task<IActionResult> Index()
|
public async Task<IActionResult> Index()
|
||||||
|
|||||||
@ -12,7 +12,11 @@ namespace CPRNIMS.WebApps.ViewComponents.POMgmt
|
|||||||
1 => "~/Views/Components/POMgmt/ShippingInstructions/Air.cshtml",
|
1 => "~/Views/Components/POMgmt/ShippingInstructions/Air.cshtml",
|
||||||
2 => "~/Views/Components/POMgmt/ShippingInstructions/Courier.cshtml",
|
2 => "~/Views/Components/POMgmt/ShippingInstructions/Courier.cshtml",
|
||||||
3 => "~/Views/Components/POMgmt/ShippingInstructions/SeaFCL.cshtml",
|
3 => "~/Views/Components/POMgmt/ShippingInstructions/SeaFCL.cshtml",
|
||||||
_ => "~/Views/Components/POMgmt/ShippingInstructions/SeaLCL.cshtml"
|
4 => "~/Views/Components/POMgmt/ShippingInstructions/SeaLCL.cshtml",
|
||||||
|
5 => "~/Views/Components/POMgmt/ShippingInstructions/RawMatAir.cshtml",
|
||||||
|
6 => "~/Views/Components/POMgmt/ShippingInstructions/RawMatCourier.cshtml",
|
||||||
|
7 => "~/Views/Components/POMgmt/ShippingInstructions/RawMatSeaFCL.cshtml",
|
||||||
|
_ => "~/Views/Components/POMgmt/ShippingInstructions/RawMatSeaLCL.cshtml"
|
||||||
};
|
};
|
||||||
|
|
||||||
// Render the selected view
|
// Render the selected view
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -7,17 +7,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<div class="form-group" style="display: flex; align-items: center; gap: 10px;">
|
<div class="form-group">
|
||||||
<label for="discount">Discount</label>
|
<label class="lbl">Discount</label>
|
||||||
<div style="flex: 1; display: flex; align-items: center;">
|
<input type="number" id="discount" name="discount"
|
||||||
<input id="discountAmount" type="number" class="form-control" style="flex: 1; margin-right: 10px;">
|
class="form-control" placeholder="0.00" step="0.01" min="0">
|
||||||
<i class="bx bxs-plus-circle" style="color: green; font-size: 1.5rem; cursor: pointer;"
|
|
||||||
onclick="AddDiscount()"></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<textarea id="discount" readonly disabled
|
|
||||||
style="width: 100%; height: 45px; margin-top: 10px;"></textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@ -1,218 +1,675 @@
|
|||||||
<div class="row">
|
<style>
|
||||||
<div class="col-6">
|
*, *::before, *::after {
|
||||||
<div class="row">
|
box-sizing: border-box;
|
||||||
<div class="col-6">
|
margin: 0;
|
||||||
<div class="form-group">
|
padding: 0;
|
||||||
<label for="deliveryDate">Est. Delivery Date</label>
|
}
|
||||||
<input type="date" id="deliveryDate" class="form-control">
|
|
||||||
|
body {
|
||||||
|
font-family: 'Inter',sans-serif;
|
||||||
|
font-size: var(--fs);
|
||||||
|
line-height: var(--lh);
|
||||||
|
color: var(--text);
|
||||||
|
background: #e8eeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.po-header {
|
||||||
|
background: linear-gradient(135deg,#01696f 0%,#0a9ea6 100%);
|
||||||
|
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
|
||||||
|
padding: 10px 16px;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.po-header h5 {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: .01em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Card */
|
||||||
|
.po-card {
|
||||||
|
background: var(--surface);
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-top: none;
|
||||||
|
border-radius: 0 0 var(--radius-lg) var(--radius-lg);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
padding: 10px 14px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Meta row */
|
||||||
|
.meta-row {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-field {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-field.po-no {
|
||||||
|
flex: 0 0 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-field.final-po {
|
||||||
|
flex: 0 0 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-field.po-type {
|
||||||
|
flex: 0 0 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-field.supplier {
|
||||||
|
flex: 1 1 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Import zone */
|
||||||
|
.import-zone {
|
||||||
|
background: var(--surface-2);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
padding: 8px 10px 6px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.import-grid {
|
||||||
|
display: grid;
|
||||||
|
gap: 6px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.g-row-1 {
|
||||||
|
grid-template-columns: repeat(6,1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
.g-row-2 {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Left col */
|
||||||
|
.terms-col {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 5px;
|
||||||
|
flex: 1 1 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.terms-row {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Right panel */
|
||||||
|
.right-panel {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 6px;
|
||||||
|
flex: 0 0 660px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amounts-row {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(4,1fr);
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Labels */
|
||||||
|
label.lbl {
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--muted);
|
||||||
|
letter-spacing: .03em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label.lbl i {
|
||||||
|
font-size: .85rem;
|
||||||
|
color: var(--teal);
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Form controls */
|
||||||
|
.fc {
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
padding: 0 8px;
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
background: var(--surface);
|
||||||
|
font-size: var(--fs);
|
||||||
|
color: var(--text);
|
||||||
|
transition: border-color var(--transition),box-shadow var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fc:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--teal);
|
||||||
|
box-shadow: 0 0 0 2px rgba(1,105,111,0.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
.fc[readonly], .fc:disabled {
|
||||||
|
background: var(--surface-2);
|
||||||
|
color: var(--muted);
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
select.fc {
|
||||||
|
appearance: none;
|
||||||
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%235a7476'/%3E%3C/svg%3E");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: right 7px center;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea.fc {
|
||||||
|
height: auto;
|
||||||
|
resize: vertical;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 4px;
|
||||||
|
line-height: var(--lh);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Currency pair */
|
||||||
|
.cur-pair {
|
||||||
|
display: flex;
|
||||||
|
height: 28px;
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
overflow: hidden;
|
||||||
|
background: var(--surface);
|
||||||
|
transition: border-color var(--transition),box-shadow var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cur-pair:focus-within {
|
||||||
|
border-color: var(--teal);
|
||||||
|
box-shadow: 0 0 0 2px rgba(1,105,111,0.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
.cur-badge {
|
||||||
|
background: rgba(1,105,111,0.10);
|
||||||
|
color: var(--teal);
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 10px;
|
||||||
|
padding: 0 7px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-right: 1px solid var(--teal-border);
|
||||||
|
white-space: nowrap;
|
||||||
|
letter-spacing: .04em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cur-pair .fc {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
padding-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cur-pair .fc:focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Amount boxes */
|
||||||
|
.amt-box {
|
||||||
|
background: var(--teal-bg);
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 2px 7px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amt-box.php {
|
||||||
|
background: var(--green-bg);
|
||||||
|
border-color: rgba(67,122,34,0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
.amt-box .albl {
|
||||||
|
font-size: 9px;
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: .04em;
|
||||||
|
color: var(--muted);
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amt-box input {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: var(--teal);
|
||||||
|
font-family: inherit;
|
||||||
|
outline: none;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amt-box.php input {
|
||||||
|
color: var(--green);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Discount — simple single input ── */
|
||||||
|
#discount {
|
||||||
|
width: 100%;
|
||||||
|
height: 32px;
|
||||||
|
padding: 0 10px;
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
background: var(--surface);
|
||||||
|
font-size: var(--fs);
|
||||||
|
color: var(--text);
|
||||||
|
font-family: inherit;
|
||||||
|
transition: border-color var(--transition), box-shadow var(--transition);
|
||||||
|
display: block; /* override old display:none */
|
||||||
|
}
|
||||||
|
|
||||||
|
#discount:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--teal);
|
||||||
|
box-shadow: 0 0 0 2px rgba(1,105,111,0.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Charges table */
|
||||||
|
.charges-wrap {
|
||||||
|
border: 1px solid var(--teal-border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
overflow: hidden;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-header {
|
||||||
|
background: linear-gradient(90deg,var(--teal) 0%,#0a9ea6 100%);
|
||||||
|
color: #fff;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 3px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-header span {
|
||||||
|
font-size: 10.5px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: .04em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-header .btn-add-charge {
|
||||||
|
background: rgba(255,255,255,0.15);
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 1px 5px;
|
||||||
|
font-size: .85rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 3px;
|
||||||
|
transition: background var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-header .btn-add-charge:hover {
|
||||||
|
background: rgba(255,255,255,0.30);
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-header .btn-add-charge span {
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.charges-table-wrap {
|
||||||
|
overflow-y: auto;
|
||||||
|
max-height: 108px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Icon add */
|
||||||
|
.icon-add {
|
||||||
|
color: var(--teal);
|
||||||
|
font-size: .9rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color var(--transition),transform var(--transition);
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-add:hover {
|
||||||
|
color: var(--teal-hover);
|
||||||
|
transform: scale(1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DataTable */
|
||||||
|
.dt-wrapper {
|
||||||
|
background: var(--surface);
|
||||||
|
/* border: 1px solid var(--teal-border); */
|
||||||
|
/* border-radius: var(--radius-lg); */
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
/* padding: 8px 12px 10px; */
|
||||||
|
}
|
||||||
|
/* Reduce row height */
|
||||||
|
#DestChargesTable td,
|
||||||
|
#DestChargesTable th {
|
||||||
|
padding: 2px 6px; /* top/bottom left/right */
|
||||||
|
line-height: 1.1;
|
||||||
|
font-size: 12px; /* optional */
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Optional: make DataTables wrapper compact too */
|
||||||
|
#DestChargesTable tbody tr {
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-toolbar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-controls {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
font-size: var(--fs);
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-controls select, .dt-controls input {
|
||||||
|
height: 24px;
|
||||||
|
font-size: 11px;
|
||||||
|
padding: 0 6px;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
color: var(--text);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* table.dt-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: var(--fs);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table thead tr {
|
||||||
|
background: linear-gradient(90deg,var(--teal) 0%,#0a9ea6 100%);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table th {
|
||||||
|
padding: 5px 8px;
|
||||||
|
font-size: 10.5px;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: .02em;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table th .sort-arrows {
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-left: 3px;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table th .sort-arrows svg {
|
||||||
|
width: 7px;
|
||||||
|
height: 5px;
|
||||||
|
fill: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
border-bottom: 1px solid rgba(0,0,0,0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dt-table .no-rec {
|
||||||
|
text-align: center;
|
||||||
|
color: var(--faint);
|
||||||
|
font-style: italic;
|
||||||
|
padding: 16px;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.dt-footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 6px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-info {
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-pager {
|
||||||
|
display: flex;
|
||||||
|
gap: 4px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .dt-pager button, .btn-cancel {
|
||||||
|
background: none;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 2px 10px;
|
||||||
|
font-size: 11px;
|
||||||
|
color: var(--muted);
|
||||||
|
cursor: pointer;
|
||||||
|
transition: border-color var(--transition),color var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dt-pager button:hover, .btn-cancel:hover {
|
||||||
|
border-color: var(--teal);
|
||||||
|
color: var(--teal);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
.btn-submit {
|
||||||
|
background: var(--teal);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 4px 14px;
|
||||||
|
font-size: var(--fs);
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-submit:hover {
|
||||||
|
background: var(--teal-hover);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- Import Dynamic Component -->
|
||||||
|
<div class="import-zone">
|
||||||
|
|
||||||
|
<!-- Row 1: Dates + PI + Currency + Country -->
|
||||||
|
<div class="import-grid g-row-1" style="margin-bottom:5px;">
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Est. Delivery Date</label>
|
||||||
|
<input type="date" id="deliveryDate" class="fc">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Prof. Inv. Date</label>
|
||||||
|
<input type="date" id="piDate" class="fc">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Prof. Inv. No.</label>
|
||||||
|
<input type="text" id="piNo" class="fc" placeholder="PI-XXXX">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Country of Origin</label>
|
||||||
|
<input id="countryOrigin" name="countryOrigin" class="fc" placeholder="INDIA">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Currency / CER</label>
|
||||||
|
<div class="cur-pair">
|
||||||
|
<span class="cur-badge">USD</span>
|
||||||
|
<input type="hidden" id="currency" value="USD" />
|
||||||
|
<input type="number" id="currencyCER" name="currencyCER" value="59.00" class="fc" step="0.01">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div>
|
||||||
<div class="form-group">
|
<label class="lbl">Discount</label>
|
||||||
<label for="piDate">Prof. Inv. Date</label>
|
<input type="number" id="discount" name="discount"
|
||||||
<input type="date" class="form-control" style="margin-bottom:5px;" id="piDate">
|
class="fc" placeholder="0.00" step="0.01" min="0">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="piNo">Prof. Inv. No</label>
|
|
||||||
<input type="text" class="form-control" style="margin-bottom:5px;" id="piNo">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="currency">Currency</label>
|
|
||||||
<input disabled id="currency" value="USD" class="form-control" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="currencyCER">CER</label>
|
|
||||||
<input type="number" id="currencyCER" name="currencyCER" value="59.00" class="form-control" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-3">
|
<!-- Row 2: Left terms | Right charges+amounts -->
|
||||||
<div class="form-group">
|
<div class="g-row-2">
|
||||||
<label for="grossAmountUSD">Gross (USD) Amount</label>
|
|
||||||
<input readonly name="grossAmountUSD" id="grossAmountUSD" class="form-control" style="margin-bottom:5px;">
|
<!-- Left column -->
|
||||||
</div>
|
<div class="terms-col">
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
<!-- Payment Terms + Incoterms -->
|
||||||
<div class="form-group">
|
<div class="terms-row">
|
||||||
<label for="finalAmountUSD">Final (USD) Amount</label>
|
<div>
|
||||||
<input readonly name="finalAmountUSD" id="finalAmountUSD" class="form-control" style="margin-bottom:5px;">
|
<label class="lbl">Payment Terms</label>
|
||||||
</div>
|
<input type="search" name="C-paymentTerms" id="C-paymentTerms" class="fc" placeholder="Search...">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="podId">Port Of Discharge</label>
|
|
||||||
<select class="form-control" name="podId" id="podId"
|
|
||||||
style="margin-bottom:5px;">
|
|
||||||
<option disabled>-Select Discharge Port-</option>
|
|
||||||
<option value="1">MANILA PORT</option>
|
|
||||||
<option value="2">NORTH SEA PORT</option>
|
|
||||||
<option value="3">SOUTH SEA PORT</option>
|
|
||||||
<option value="4">MANILA PORT PHILS</option>
|
|
||||||
<option value="5">OTHERS</option>
|
|
||||||
<option value="6">MANILA PHILIPPINES</option>
|
|
||||||
<option value="7">N/A</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="C-paymentTerms">Payment Terms</label>
|
|
||||||
<input type="search" name="C-paymentTerms" id="C-paymentTerms" class="form-control" style="margin-bottom:5px;">
|
|
||||||
<input type="hidden" id="C-paymentTermsId" name="C-paymentTermsId" />
|
<input type="hidden" id="C-paymentTermsId" name="C-paymentTermsId" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div class="col-3">
|
<label class="lbl">Incoterms <i class="bx bxs-message-rounded-add icon-add" onclick="viewIncoterms()" title="Add"></i></label>
|
||||||
<div class="form-group">
|
<input type="search" name="incotermsName" id="incotermsName" class="fc" placeholder="Search...">
|
||||||
<label for="docRequiredId">Incoterms</label>
|
|
||||||
<i class="bx bxs-message-rounded-add" style="color: green; font-size: 1rem; cursor: pointer;"
|
|
||||||
onclick="viewIncoterms()"></i>
|
|
||||||
|
|
||||||
<input type="search" name="incotermsName" id="incotermsName" class="form-control" style="margin-bottom:5px;">
|
|
||||||
<input type="hidden" id="incoTermsId" name="incoTermsId" />
|
<input type="hidden" id="incoTermsId" name="incoTermsId" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="form-group">
|
<!-- Port + Shipping -->
|
||||||
<label for="shippingInstructionId">Shipping Instrctn.</label>
|
<div class="terms-row">
|
||||||
<select class="form-control" name="shippingInstructionId" id="shippingInstructionId"
|
<div>
|
||||||
style="margin-bottom:5px;">
|
<label class="lbl">Port of Discharge</label>
|
||||||
<option disabled>-Select Shipping Instruction-</option>
|
<select class="fc" name="podId" id="podId">
|
||||||
<option value="1">AIR</option>
|
<option disabled selected>— Select —</option>
|
||||||
<option value="2">COURIER</option>
|
<option value="1">Manila Port</option>
|
||||||
<option value="3">SEA FCL</option>
|
<option value="2">North Sea Port</option>
|
||||||
<option value="4">SEA LCL</option>
|
<option value="3">South Sea Port</option>
|
||||||
<option value="5">N/A</option>
|
<option value="4">Manila Port PHILS</option>
|
||||||
<option value="4">OTHERS</option>
|
<option value="5">Others</option>
|
||||||
|
<option value="6">Manila Philippines</option>
|
||||||
|
<option value="7">N/A</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Shipping Instruction</label>
|
||||||
|
<select class="fc" name="shippingInstructionId" id="shippingInstructionId">
|
||||||
|
<option disabled selected>— Select —</option>
|
||||||
|
<option value="1">General AIR</option>
|
||||||
|
<option value="2">General COURIER</option>
|
||||||
|
<option value="3">General SEA FCL</option>
|
||||||
|
<option value="4">General SEA LCL</option>
|
||||||
|
<option value="5">RawMat AIR</option>
|
||||||
|
<option value="6">RawMat COURIER</option>
|
||||||
|
<option value="7">RawMat SEA FCL</option>
|
||||||
|
<option value="8">RawMat SEA LCL</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Docs + Remarks -->
|
||||||
|
<div class="terms-row" style="flex:1;">
|
||||||
|
<div style="display:flex;flex-direction:column;">
|
||||||
|
<label class="lbl">Docs Required <i class="bx bxs-message-rounded-add icon-add" onclick="viewDocRequired()" title="Add"></i></label>
|
||||||
|
<textarea readonly id="docRequiredId" class="fc" placeholder="Docs will appear here..." style="flex:1;resize:none;height:80px;"></textarea>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex;flex-direction:column;">
|
||||||
|
<label class="lbl">Remarks</label>
|
||||||
|
<textarea id="remarks" class="fc" placeholder="Special instructions…" style="flex:1;resize:none;height:80px;"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-6">
|
</div><!-- /terms-col -->
|
||||||
<div class="row">
|
<!-- Right column -->
|
||||||
<div class="col-6">
|
<div class="right-panel">
|
||||||
<div class="form-group" style="display: flex; align-items: center; gap: 10px;">
|
|
||||||
<label for="discount">Discount</label>
|
<!-- List of Charges -->
|
||||||
<div style="flex: 1; display: flex; align-items: center;">
|
<div style="display:flex;flex-direction:column;flex:1;">
|
||||||
<input id="discountAmount" type="number" class="form-control" style="flex: 1; margin-right: 10px;">
|
<div class="charges-wrap" style="display:flex;flex-direction:column;flex:1;">
|
||||||
<i class="bx bxs-plus-circle" style="color: green; font-size: 1.5rem; cursor: pointer;"
|
<div class="charges-header">
|
||||||
onclick="AddDiscount()"></i>
|
<span>List of Charges</span>
|
||||||
</div>
|
<button class="btn-add-charge" onclick="viewCharges()">
|
||||||
</div>
|
<i class="bx bxs-message-rounded-add"></i>
|
||||||
<textarea id="discount" readonly disabled
|
<span>Add</span>
|
||||||
style="width: 100%; height: 45px; margin-top: 10px;"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="grossAmountPHP">Gross (PHP) Amount</label>
|
|
||||||
<input readonly name="grossAmountPHP" id="grossAmountPHP" class="form-control" style="margin-bottom:5px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="finalAmountPHP">Final (PHP) Amount</label>
|
|
||||||
<input readonly name="finalAmountPHP" id="finalAmountPHP" class="form-control" style="margin-bottom:5px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6" style="margin-top:-15px;">
|
|
||||||
<div class="form-group">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-6">
|
|
||||||
<label for="docRequiredId">Docs Required</label>
|
|
||||||
<i class="bx bxs-message-rounded-add" style="color: green; font-size: 1rem; cursor: pointer;"
|
|
||||||
onclick="viewDocRequired()"></i>
|
|
||||||
<textarea readonly id="docRequiredId" class="form-control"
|
|
||||||
style="width: 100%; height: 150px;margin-bottom:10px;"></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<label for="remarks">Remarks</label>
|
|
||||||
<textarea id="remarks" class="form-control"
|
|
||||||
style="width: 100%; height: 150px;margin-bottom:10px;"></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@await Html.PartialAsync("PagesView/PO/_OtherCharges")
|
|
||||||
</div>
|
|
||||||
<!-- Modal Incoterms-->
|
|
||||||
<div class="modal fade custom-modal-backdrop" id="viewIncoterms"
|
|
||||||
tabindex="-1" aria-labelledby="IncotermsLabel" data-bs-backdrop="static">
|
|
||||||
<div class="modal-dialog" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h3 id="IncotermsLabel" class="modal-title">
|
|
||||||
Incoterms List
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<button type="button" class="btn btn-success"
|
|
||||||
id="chooseItem" onclick="viewIncotermsModal(0,{})">
|
|
||||||
Add new
|
|
||||||
</button>
|
</button>
|
||||||
<br />
|
</div>
|
||||||
<br />
|
<div class="charges-table-wrap" style="flex:1;">
|
||||||
<table id="IncotermsTable" class="row-border" style="width: 100%;">
|
<table id="DestChargesTable" class="tbl-charges">
|
||||||
<colgroup>
|
|
||||||
<col style="width:90%" />
|
|
||||||
<col style="width:10%" />
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Incoterms</th>
|
<th style="display:none;">otherChargesId</th>
|
||||||
<th>Action</th>
|
<th style="width:78%;">Charge Name</th>
|
||||||
|
<th style="width:14%;">Amount</th>
|
||||||
|
<th style="width:8%;">Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Back</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Amounts 2×2 -->
|
||||||
|
<div class="amounts-row">
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Gross (USD)</label>
|
||||||
|
<div class="amt-box">
|
||||||
|
<span class="albl">USD Gross</span>
|
||||||
|
<input readonly name="grossAmountUSD" id="grossAmountUSD" placeholder="—">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Modal viewIncotermsModal-->
|
<div>
|
||||||
<div class="modal fade custom-modal-backdrop" id="viewIncotermsModal" tabindex="-1"
|
<label class="lbl">Final (USD)</label>
|
||||||
aria-labelledby="incotermsLabel"
|
<div class="amt-box">
|
||||||
data-bs-backdrop="static">
|
<span class="albl">USD Final</span>
|
||||||
<div class="modal-dialog" role="document" data-bs-backdrop="static">
|
<input readonly name="finalAmountUSD" id="finalAmountUSD" placeholder="—">
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 id="incotermsHeader" class="modal-title">
|
|
||||||
</h5>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="update-incotermsName">Incoterms Name</label>
|
|
||||||
<input id="update-incotermsName" class="form-control" style="margin-top:10px" placeholder="input here..." />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<input hidden id="update-incotermsId" />
|
<div>
|
||||||
<div class="modal-footer">
|
<label class="lbl">Gross (PHP)</label>
|
||||||
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Back</button>
|
<div class="amt-box php">
|
||||||
<button type="button" id="btnPostPutIncoterms" onclick="postPutIncoterms()" class="btn btn-success">Submit</button>
|
<span class="albl">PHP Gross</span>
|
||||||
|
<input readonly name="grossAmountPHP" id="grossAmountPHP" placeholder="—">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="lbl">Final (PHP)</label>
|
||||||
|
<div class="amt-box php">
|
||||||
|
<span class="albl">PHP Final</span>
|
||||||
|
<input readonly name="finalAmountPHP" id="finalAmountPHP" placeholder="—">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@await Html.PartialAsync("PagesView/PO/_DocRequired")
|
</div><!-- /right-panel -->
|
||||||
|
</div><!-- /g-row-2 -->
|
||||||
|
|
||||||
|
</div><!-- /import-zone -->
|
||||||
|
<!-- Hidden inputs -->
|
||||||
<input hidden id="dr-ImportPoNo" />
|
<input hidden id="dr-ImportPoNo" />
|
||||||
<input hidden id="si-ImportPoNo" />
|
<input hidden id="si-ImportPoNo" />
|
||||||
|
@await Html.PartialAsync("PagesView/PO/_DocRequired")
|
||||||
@ -7,16 +7,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<div class="form-group" style="display: flex; align-items: center; gap: 10px;">
|
<div>
|
||||||
<label for="discount">Discount</label>
|
<div class="form-group">
|
||||||
<div style="flex: 1; display: flex; align-items: center;">
|
<label class="lbl">Discount</label>
|
||||||
<input id="discountAmount" type="number" class="form-control" style="flex: 1; margin-right: 10px;">
|
<input type="number" id="discount" name="discount"
|
||||||
<i class="bx bxs-plus-circle" style="color: green; font-size: 1.5rem; cursor: pointer;"
|
class="form-control" placeholder="0.00" step="0.01" min="0">
|
||||||
onclick="AddDiscount()"></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<textarea id="discount" readonly disabled
|
|
||||||
style="width: 100%; height: 45px; margin-top: 10px;"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
|
|||||||
@ -1,125 +1,191 @@
|
|||||||
<style>
|
<title>Shipping Instructions – Annex A</title>
|
||||||
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
}
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
.container-Form {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header p {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.supplier {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions p {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul {
|
.title {
|
||||||
list-style: none;
|
text-align: center;
|
||||||
padding-left: 20px;
|
font-weight: bold;
|
||||||
margin-bottom: 20px;
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul li {
|
.field-row {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shipping-address {
|
.field-label {
|
||||||
margin-bottom: 20px;
|
font-weight: bold;
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preferred-airlines {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.preferred-airlines ul {
|
|
||||||
columns: 3;
|
|
||||||
padding-left: 20px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme {
|
|
||||||
margin-top: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme span {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 200px;
|
min-width: 140px;
|
||||||
border-top: 1px solid black;
|
}
|
||||||
text-align: center;
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.airlines {
|
||||||
|
columns: 2;
|
||||||
|
-webkit-columns: 2;
|
||||||
|
-moz-columns: 2;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
|
||||||
<div class="instructions">
|
<div class="field-row">
|
||||||
<p>SHIPPING INSTRUCTIONS:</p>
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
<p>1.) IN COMPLIANCE WITH FDA GMP PIC/S STANDARD FOR ALL MANUFACTURING COMPANY, CONTAINERS OF ACTIVE PHARMACEUTICAL INGREDIENTS (API), AS WELL AS EXCIPIENTS SHOULD BEAR IN THE LABEL THE FOLLOWING INFORMATION:</p>
|
<span>Air</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 103<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>*NAME OF MANUFACTURER WITH COMPLETE ADDRESS AND CONTACT NUMBERS</li>
|
<li>Commercial Invoice</li>
|
||||||
<li>*PRODUCT NAME</li>
|
<li>Packing List</li>
|
||||||
<li>*GROSS WEIGHT/NET WEIGHT</li>
|
<li>Product brochures</li>
|
||||||
<li>*MANUFACTURING DATE</li>
|
<li>Product Manuals</li>
|
||||||
<li>*EXPIRATION DATE</li>
|
<li>Insurance Certificate, if applicable</li>
|
||||||
<li>*BATCH/LOT NO</li>
|
<li>Airway Bill (AWB) for air shipments</li>
|
||||||
<li>*STORAGE REQUIREMENT</li>
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>2.) CERTIFICATE OF ANALYSIS SHOULD BE IN COMPANY'S LETTERHEAD (MANUFACTURER) WITH COMPLETE ADDRESS AND CONTACT NUMBER, SPECIFICATIONS WITH RESULTS, STATEMENT OF CONFORMANCE, REFERENCE OFFICIAL MONOGRAPH, SIGNATURE OF THE ANALYST AND APPROVING AUTHORITY.</p>
|
|
||||||
<p>3.) THE MANUFACTURING AND EXPIRATION DATE OF THE MATERIAL SHOULD BE MORE THAN 3 YEARS BUT NOT LESS THAN 1 YEAR.</p>
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
<p>4.) GOODS TO BE DELIVERED SHOULD COME FROM ONE (1) BATCH ONLY.</p>
|
|
||||||
<p>5.) KINDLY FURNISH IN ADVANCE, COPY OF THE SHIPPING DOCUMENTS FOR CHECKING AND APPROVAL PRIOR TO DESPATCH.</p>
|
<p>
|
||||||
<p>6.) ORIGINAL COPIES OF THE SHIPPING DOCUMENTS (INVOICE, PACKING LIST AND COA) SHOULD BE COURIERED/SENT TO:</p>
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
</div>
|
</p>
|
||||||
<div class="shipping-address">
|
|
||||||
<p>LLOYD LABORATORIES, INC. WITH ADDRESS AT #73 SCOUT FERNANDEZ ST., BRGY. LAGING HANDA, QUEZON CITY 1103, PHILIPPINES.</p>
|
|
||||||
<p>TEL NO: +632-372-3984 TO 89 LOCAL 103 MOBILE NUMBER: +63922-899-6318</p>
|
|
||||||
<p>CONTACT PERSON: TERESA MANIO</p>
|
|
||||||
</div>
|
|
||||||
<div class="instructions">
|
|
||||||
<p>7.) ONLY ATTACH THE AIRWAY BILL (AWB) AND MSDS WITH THE SHIPMENT.</p>
|
|
||||||
<p>8.) ARRIVAL OF SHIPMENT MUST BE FROM MONDAY TO WEDNESDAY PREFERABLY.</p>
|
|
||||||
<p>9.) LOAD THE GOODS WITH ANY OF THE FOLLOWING PREFERRED AIRLINES:</p>
|
|
||||||
</div>
|
|
||||||
<div class="preferred-airlines">
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>a.) BR - Eva Air</li>
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
<li>b.) CI - China Airlines</li>
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
<li>c.) CZ - China Southern Airlines</li>
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>d.) CX - Cathay Pacific</li>
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>e.) JL - Japan Airlines</li>
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>f.) LH - Lufthansa German Airlines</li>
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>g.) NW - Northwest Orient</li>
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
<li>h.) NX - Air Macau</li>
|
</ul>
|
||||||
<li>i.) QF - Quantas Airways</li>
|
|
||||||
<li>j.) SQ - Singapore Airlines</li>
|
<div class="section-title">Air Shipments</div>
|
||||||
<li>k.) TG - Thai Airways</li>
|
|
||||||
<li>l.) EK - Emirates Air</li>
|
<p>For air shipments:</p>
|
||||||
<li>m.) KE - Korean Airlines</li>
|
|
||||||
<li>n.) GF - Gulf Air</li>
|
<ul>
|
||||||
<li>o.) EY - Ethad Airways</li>
|
<li>Attach only the Airway Bill (AWB) and MSDS with the shipment.</li>
|
||||||
|
<li>Load the goods with any of the following preferred airlines:</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="airlines">
|
||||||
|
<ul>
|
||||||
|
<li>BR – EVA Air</li>
|
||||||
|
<li>CI – China Airlines</li>
|
||||||
|
<li>CZ – China Southern Airlines</li>
|
||||||
|
<li>CX – Cathay Pacific</li>
|
||||||
|
<li>JL – Japan Airlines</li>
|
||||||
|
<li>LH – Lufthansa German Airlines</li>
|
||||||
|
<li>NW – Northwest Orient</li>
|
||||||
|
<li>NX – Air Macau</li>
|
||||||
|
<li>QF – Qantas Airways</li>
|
||||||
|
<li>SQ – Singapore Airlines</li>
|
||||||
|
<li>TG – Thai Airways</li>
|
||||||
|
<li>EK – Emirates Air</li>
|
||||||
|
<li>KE – Korean Airlines</li>
|
||||||
|
<li>GF – Gulf Air</li>
|
||||||
|
<li>EY – Etihad Airways</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<p><em>*NON-COMPLIANCE TO INSTRUCTIONS WOULD MEAN NON-ACCEPTANCE OF DELIVERIES.</em></p>
|
|
||||||
<div class="conforme">
|
<div class="section-title">Non-Compliance</div>
|
||||||
<p>Conforme:</p>
|
|
||||||
<span>Supplier</span>
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
@ -1,91 +1,164 @@
|
|||||||
<body>
|
|
||||||
<div class="instructions">
|
<title>Shipping Instructions – Annex A Courier</title>
|
||||||
<p>SHIPPING INSTRUCTIONS:</p>
|
|
||||||
<p>1.) IN COMPLIANCE WITH FDA GMP PIC/S STANDARD FOR ALL MANUFACTURING COMPANY, CONTAINERS OF ACTIVE PHARMACEUTICAL INGREDIENTS (API), AS WELL AS EXCIPIENTS SHOULD BEAR IN THE LABEL THE FOLLOWING INFORMATION:</p>
|
|
||||||
<ul>
|
|
||||||
<li>*NAME OF MANUFACTURER WITH COMPLETE ADDRESS AND CONTACT NUMBERS</li>
|
|
||||||
<li>*PRODUCT NAME</li>
|
|
||||||
<li>*GROSS WEIGHT/NET WEIGHT</li>
|
|
||||||
<li>*MANUFACTURING DATE</li>
|
|
||||||
<li>*EXPIRATION DATE</li>
|
|
||||||
<li>*BATCH/LOT NO</li>
|
|
||||||
<li>*STORAGE REQUIREMENT</li>
|
|
||||||
</ul>
|
|
||||||
<p>2.) CERTIFICATE OF ANALYSIS SHOULD BE IN COMPANY'S LETTERHEAD (MANUFACTURER) WITH COMPLETE ADDRESS AND CONTACT NUMBER, SPECIFICATIONS WITH RESULTS, STATEMENT OF CONFORMANCE, REFERENCE OFFICIAL MONOGRAPH, SIGNATURE OF THE ANALYST AND APPROVING AUTHORITY.</p>
|
|
||||||
<p>3.) THE MANUFACTURING AND EXPIRATION DATE OF THE MATERIAL SHOULD BE MORE THAN 3 YEARS BUT NOT LESS THAN 1 YEAR.</p>
|
|
||||||
<p>4.) GOODS TO BE DELIVERED SHOULD COME FROM ONE (1) BATCH ONLY.</p>
|
|
||||||
<p>5.) KINDLY FURNISH IN ADVANCE, COPY OF THE SHIPPING DOCUMENTS FOR CHECKING AND APPROVAL PRIOR TO DESPATCH.</p>
|
|
||||||
<p>6.) ORIGINAL COPIES OF THE SHIPPING DOCUMENTS (INVOICE, PACKING LIST AND COA) SHOULD BE COURIERED/SENT TO:</p>
|
|
||||||
</div>
|
|
||||||
<div class="shipping-address">
|
|
||||||
<p>LLOYD LABORATORIES, INC. WITH ADDRESS AT #73 SCOUT FERNANDEZ ST., BRGY. LAGING HANDA, QUEZON CITY 1103, PHILIPPINES.</p>
|
|
||||||
<p>TEL NO: +632-372-3984 TO 89 LOCAL 103 MOBILE NUMBER: +63922-899-6318</p>
|
|
||||||
<p>CONTACT PERSON: TERESA MANIO</p>
|
|
||||||
</div>
|
|
||||||
<p><em>*NON-COMPLIANCE TO INSTRUCTIONS WOULD MEAN NON-ACCEPTANCE OF DELIVERIES.</em></p>
|
|
||||||
<div class="conforme">
|
|
||||||
<p>Conforme:</p>
|
|
||||||
<span>Supplier</span>
|
|
||||||
</div>
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
}
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
.container-Form {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header p {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.supplier {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions p {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul {
|
.title {
|
||||||
list-style: none;
|
text-align: center;
|
||||||
padding-left: 20px;
|
font-weight: bold;
|
||||||
margin-bottom: 20px;
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul li {
|
.field-row {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shipping-address {
|
.field-label {
|
||||||
margin-bottom: 20px;
|
font-weight: bold;
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme {
|
|
||||||
margin-top: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme span {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 200px;
|
min-width: 140px;
|
||||||
border-top: 1px solid black;
|
}
|
||||||
text-align: center;
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</body>
|
<div class="field-row">
|
||||||
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
|
<span>Air</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 103<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Commercial Invoice</li>
|
||||||
|
<li>Packing List</li>
|
||||||
|
<li>Product brochures</li>
|
||||||
|
<li>Product Manuals</li>
|
||||||
|
<li>Insurance Certificate, if applicable</li>
|
||||||
|
<li>Airway Bill (AWB)</li>
|
||||||
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Courier Shipments</div>
|
||||||
|
|
||||||
|
<p>For courier shipments:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Attach only the Airway Bill (AWB) and MSDS with the shipment.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@ -0,0 +1,229 @@
|
|||||||
|
<title>Shipping Instructions – Annex A Raw Materials Air</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-row {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-label {
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.airlines {
|
||||||
|
columns: 2;
|
||||||
|
-webkit-columns: 2;
|
||||||
|
-moz-columns: 2;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
|
<span>Air</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
In compliance with FDA GMP PIC/S standards for all manufacturing companies, containers of Active Pharmaceutical Ingredients (API) and excipients should bear the following information on the label as shipping marks:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Consignee / Ship-to details as follows:
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>Lloyd Laboratories, Inc.</strong><br />
|
||||||
|
#10 Lloyd Avenue, First Bulacan Industrial City<br />
|
||||||
|
Brgy. Tikay, City of Malolos, Bulacan 3000, Philippines<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan / +63 946 900 8240
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Product name</li>
|
||||||
|
<li>Gross weight / Net weight</li>
|
||||||
|
<li>Manufacturing date</li>
|
||||||
|
<li>Expiration date</li>
|
||||||
|
<li>Batch / Lot No.</li>
|
||||||
|
<li>Storage requirement</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Certificate of Analysis should be in the manufacturer's company letterhead with complete address and contact number, specifications with results, statement of conformance, reference official monograph, and signature of the analyst and approving authority.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Shelf life upon schedule of dispatch should be at least 80%, or follow the shelf life requirement stated in the purchase order. Where specified, remaining shelf life upon dispatch should not be less than 18 months.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Goods to be delivered should come from one (1) batch only, unless otherwise specified in the purchase order.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 103<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Commercial Invoice</li>
|
||||||
|
<li>Packing List</li>
|
||||||
|
<li>Certificate of Analysis (CoA)</li>
|
||||||
|
<li>Product brochures</li>
|
||||||
|
<li>MSDS / SDS with CAS #</li>
|
||||||
|
<li>Insurance Certificate, if applicable</li>
|
||||||
|
<li>Airway Bill (AWB) for air shipments</li>
|
||||||
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Air Shipments</div>
|
||||||
|
|
||||||
|
<p>For air shipments:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Attach only the Airway Bill (AWB) and MSDS with the shipment.</li>
|
||||||
|
<li>Load the goods with any of the following preferred airlines:</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="airlines">
|
||||||
|
<ul>
|
||||||
|
<li>BR – EVA Air</li>
|
||||||
|
<li>CI – China Airlines</li>
|
||||||
|
<li>CZ – China Southern Airlines</li>
|
||||||
|
<li>CX – Cathay Pacific</li>
|
||||||
|
<li>JL – Japan Airlines</li>
|
||||||
|
<li>LH – Lufthansa German Airlines</li>
|
||||||
|
<li>NW – Northwest Orient</li>
|
||||||
|
<li>NX – Air Macau</li>
|
||||||
|
<li>QF – Qantas Airways</li>
|
||||||
|
<li>SQ – Singapore Airlines</li>
|
||||||
|
<li>TG – Thai Airways</li>
|
||||||
|
<li>EK – Emirates Air</li>
|
||||||
|
<li>KE – Korean Airlines</li>
|
||||||
|
<li>GF – Gulf Air</li>
|
||||||
|
<li>EY – Etihad Airways</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,201 @@
|
|||||||
|
<title>Shipping Instructions – Annex A Raw Materials Courier</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-row {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-label {
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
|
<span>Courier</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
In compliance with FDA GMP PIC/S standards for all manufacturing companies, containers of Active Pharmaceutical Ingredients (API) and excipients should bear the following information on the label as shipping marks:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Consignee / Ship-to details as follows:
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>Lloyd Laboratories, Inc.</strong><br />
|
||||||
|
#10 Lloyd Avenue, First Bulacan Industrial City<br />
|
||||||
|
Brgy. Tikay, City of Malolos, Bulacan 3000, Philippines<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan / +63 946 900 8240
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Product name</li>
|
||||||
|
<li>Gross weight / Net weight</li>
|
||||||
|
<li>Manufacturing date</li>
|
||||||
|
<li>Expiration date</li>
|
||||||
|
<li>Batch / Lot No.</li>
|
||||||
|
<li>Storage requirement</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Certificate of Analysis should be in the manufacturer's company letterhead with complete address and contact number, specifications with results, statement of conformance, reference official monograph, and signature of the analyst and approving authority.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Shelf life upon schedule of dispatch should be at least 80%, or follow the shelf life requirement stated in the purchase order. Where specified, remaining shelf life upon dispatch should not be less than 18 months.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Goods to be delivered should come from one (1) batch only, unless otherwise specified in the purchase order.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 103<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Commercial Invoice</li>
|
||||||
|
<li>Packing List</li>
|
||||||
|
<li>Certificate of Analysis (CoA)</li>
|
||||||
|
<li>Product brochures</li>
|
||||||
|
<li>MSDS / SDS with CAS #</li>
|
||||||
|
<li>Insurance Certificate, if applicable</li>
|
||||||
|
<li>Airway Bill (AWB)</li>
|
||||||
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Courier Shipments</div>
|
||||||
|
|
||||||
|
<p>For courier shipments:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Attach only the Airway Bill (AWB) and MSDS with the shipment.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@ -0,0 +1,226 @@
|
|||||||
|
<title>Shipping Instructions – Annex A Raw Materials FCL</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-row {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-label {
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
|
<span>FCL</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
In compliance with FDA GMP PIC/S standards for all manufacturing companies, containers of Active Pharmaceutical Ingredients (API) and excipients should bear the following information on the label as shipping marks:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Consignee / Ship-to details as follows:
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>Lloyd Laboratories, Inc.</strong><br />
|
||||||
|
#10 Lloyd Avenue, First Bulacan Industrial City<br />
|
||||||
|
Brgy. Tikay, City of Malolos, Bulacan 3000, Philippines<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan / +63 946 900 8240
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Product name</li>
|
||||||
|
<li>Gross weight / Net weight</li>
|
||||||
|
<li>Manufacturing date</li>
|
||||||
|
<li>Expiration date</li>
|
||||||
|
<li>Batch / Lot No.</li>
|
||||||
|
<li>Storage requirement</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Certificate of Analysis should be in the manufacturer's company letterhead with complete address and contact number, specifications with results, statement of conformance, reference official monograph, and signature of the analyst and approving authority.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Shelf life upon schedule of dispatch should be at least 80%, or follow the shelf life requirement stated in the purchase order. Where specified, remaining shelf life upon dispatch should not be less than 18 months.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Goods to be delivered should come from one (1) batch only, unless otherwise specified in the purchase order.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 145<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Commercial Invoice</li>
|
||||||
|
<li>Packing List</li>
|
||||||
|
<li>Certificate of Analysis (CoA)</li>
|
||||||
|
<li>Product brochures</li>
|
||||||
|
<li>MSDS / SDS with CAS #</li>
|
||||||
|
<li>Insurance Certificate, if applicable</li>
|
||||||
|
<li>Bill of Lading for sea shipments</li>
|
||||||
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Sea Shipments</div>
|
||||||
|
|
||||||
|
<div class="section-title" style="margin-top: 10px;">FCL Shipments</div>
|
||||||
|
|
||||||
|
<p>For full container load (FCL) shipments:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Shipment must be dispatched in one full container.</li>
|
||||||
|
<li>Preferred shipping lines for immediate release of cargo are:</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>APL (American President Lines) Shipping Lines</li>
|
||||||
|
<li>Wallem Philippines Shipping Inc.</li>
|
||||||
|
<li>Wan Hai Lines</li>
|
||||||
|
<li>Evergreen Shipping Agency Phils., Corp.</li>
|
||||||
|
<li>KMTC Philippines Corp.</li>
|
||||||
|
<li>MOL Philippines Inc.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Shipping lines to avoid are:</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>SITC Container Lines Phils., Inc.</li>
|
||||||
|
<li>COSCO Philippines Shipping, Inc.</li>
|
||||||
|
<li>Sky International Inc.</li>
|
||||||
|
<li>MCC Transport</li>
|
||||||
|
<li>Maersk Line</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -0,0 +1,214 @@
|
|||||||
|
<title>Shipping Instructions – Annex A Raw Materials LCL</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-row {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field-label {
|
||||||
|
font-weight: bold;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
|
<span>LCL</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
In compliance with FDA GMP PIC/S standards for all manufacturing companies, containers of Active Pharmaceutical Ingredients (API) and excipients should bear the following information on the label as shipping marks:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Consignee / Ship-to details as follows:
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>Lloyd Laboratories, Inc.</strong><br />
|
||||||
|
#10 Lloyd Avenue, First Bulacan Industrial City<br />
|
||||||
|
Brgy. Tikay, City of Malolos, Bulacan 3000, Philippines<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan / +63 946 900 8240
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Product name</li>
|
||||||
|
<li>Gross weight / Net weight</li>
|
||||||
|
<li>Manufacturing date</li>
|
||||||
|
<li>Expiration date</li>
|
||||||
|
<li>Batch / Lot No.</li>
|
||||||
|
<li>Storage requirement</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Certificate of Analysis should be in the manufacturer's company letterhead with complete address and contact number, specifications with results, statement of conformance, reference official monograph, and signature of the analyst and approving authority.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Shelf life upon schedule of dispatch should be at least 80%, or follow the shelf life requirement stated in the purchase order. Where specified, remaining shelf life upon dispatch should not be less than 18 months.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Goods to be delivered should come from one (1) batch only, unless otherwise specified in the purchase order.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 145<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Commercial Invoice</li>
|
||||||
|
<li>Packing List</li>
|
||||||
|
<li>Certificate of Analysis (CoA)</li>
|
||||||
|
<li>Product brochures</li>
|
||||||
|
<li>MSDS / SDS with CAS #</li>
|
||||||
|
<li>Insurance Certificate, if applicable</li>
|
||||||
|
<li>Bill of Lading for sea shipments</li>
|
||||||
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Sea Shipments</div>
|
||||||
|
|
||||||
|
<div class="section-title" style="margin-top: 10px;">LCL Shipments</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For less than container load (LCL) shipments, the preferred forwarders and warehouses for cheaper inbound charges are:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Oceanlink Forwarders & Services Phils. Inc.</li>
|
||||||
|
<li>Con-Pac Warehousing Inc.</li>
|
||||||
|
<li>Safeway Philippines Freight Co., Inc.</li>
|
||||||
|
<li>Philippine Consolidated Investors Corp.</li>
|
||||||
|
<li>Pac-Atlantic Lines (Phils.) Inc.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>LCL guideline:</strong> up to 1,000 kg and up to 5 CBM, where applicable.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -1,109 +1,188 @@
|
|||||||
<style>
|
<title>Shipping Instructions – Annex A General FCL</title>
|
||||||
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
}
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
.container-Form {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
.header {
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.header p {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.supplier {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.instructions p {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul {
|
.title {
|
||||||
list-style: none;
|
text-align: center;
|
||||||
padding-left: 20px;
|
font-weight: bold;
|
||||||
margin-bottom: 20px;
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul li {
|
.field-row {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shipping-address {
|
.field-label {
|
||||||
margin-bottom: 20px;
|
font-weight: bold;
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme {
|
|
||||||
margin-top: 40px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme span {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 200px;
|
min-width: 140px;
|
||||||
border-top: 1px solid black;
|
}
|
||||||
text-align: center;
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
|
||||||
<div class="instructions">
|
<div class="field-row">
|
||||||
<p>SHIPPING INSTRUCTIONS:</p>
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
<p>1.) IN COMPLIANCE WITH FDA GMP PIC/S STANDARD FOR ALL MANUFACTURING COMPANY, CONTAINERS OF ACTIVE PHARMACEUTICAL INGREDIENTS (API), AS WELL AS EXCIPIENTS SHOULD BEAR IN THE LABEL THE FOLLOWING INFORMATION:</p>
|
<span>FCL</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 145<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>*NAME OF MANUFACTURER WITH COMPLETE ADDRESS AND CONTACT NUMBERS</li>
|
<li>Commercial Invoice</li>
|
||||||
<li>*PRODUCT NAME</li>
|
<li>Packing List</li>
|
||||||
<li>*GROSS WEIGHT/NET WEIGHT</li>
|
<li>Product brochures</li>
|
||||||
<li>*MANUFACTURING DATE</li>
|
<li>Product Manuals</li>
|
||||||
<li>*EXPIRATION DATE</li>
|
<li>Insurance Certificate, if applicable</li>
|
||||||
<li>*BATCH/LOT NO</li>
|
<li>Bill of Lading for sea shipments</li>
|
||||||
<li>*STORAGE REQUIREMENT</li>
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>2.) CERTIFICATE OF ANALYSIS SHOULD BE IN COMPANY'S LETTERHEAD (MANUFACTURER) WITH COMPLETE ADDRESS AND CONTACT NUMBER, SPECIFICATIONS WITH RESULTS, STATEMENT OF CONFORMANCE, REFERENCE OFFICIAL MONOGRAPH, SIGNATURE OF THE ANALYST AND APPROVING AUTHORITY.</p>
|
|
||||||
<p>3.) SHELF LIFE SHOULD BE 80% UPON SCHEDULE OF DISPATCH.</p>
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
<p>4.) GOODS MUST BE IN MAXIMUM BATCH SIZE.</p>
|
|
||||||
<p>5.) KINDLY FURNISH IN ADVANCE, COPY OF THE SHIPPING DOCUMENTS FOR CHECKING AND APPROVAL PRIOR TO DESPATCH.</p>
|
<p>
|
||||||
<p>6.)</p>
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
<p>7.) ORIGINAL COPIES OF THE SHIPPING DOCUMENTS (INVOICE, PACKING LIST, FORM AI AND COA) SHOULD BE COURIERED/SENT TO:</p>
|
</p>
|
||||||
</div>
|
|
||||||
<div class="shipping-address">
|
|
||||||
<p>LLOYD LABORATORIES, INC. WITH ADDRESS AT #73 SCOUT FERNANDEZ ST., BRGY. LAGING HANDA, QUEZON CITY 1103, PHILIPPINES.</p>
|
|
||||||
<p>TEL NO: +632-372-3984 TO 89 LOCAL 103 MOBILE NUMBER: +63922-899-6318</p>
|
|
||||||
<p>CONTACT PERSON: TERESA MANIO</p>
|
|
||||||
</div>
|
|
||||||
<div class="instructions">
|
|
||||||
<p>8.) SHIPMENT MUST BE DISPATCH IN 1 FULL CONTAINER.</p>
|
|
||||||
<p>9.) IN CONNECTION TO FCL SHIPMENT, PLEASE SEE BELOW LIST OF PREFERRED SHIPPING LINES FOR IMMEDIATE RELEASE OF THE CARGO:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>1. APL (American President Lines) Shipping Lines</li>
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
<li>2. WALLEM PHILIPPINES SHIPPING INC.</li>
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
<li>3. WAN HAI LINES</li>
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>4. EVERGREEN SHIPPING AGENCY PHILS., CORP.</li>
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>5. KMTC PHILIPPINES CORP.</li>
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>6. MOL PHILIPPINES INC.</li>
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Shipping Lines to avoid are:</p>
|
|
||||||
|
<div class="section-title">Sea Shipments</div>
|
||||||
|
|
||||||
|
<div class="section-title" style="margin-top: 10px;">FCL Shipments</div>
|
||||||
|
|
||||||
|
<p>For full container load (FCL) shipments:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>1. SITC Container Lines Phils., Inc.</li>
|
<li>Shipment must be dispatched in one full container.</li>
|
||||||
<li>2. COSCO Philippines Shipping, Inc.</li>
|
<li>Preferred shipping lines for immediate release of cargo are:</li>
|
||||||
<li>3. Sky International Inc.</li>
|
|
||||||
<li>4. MCC Transport</li>
|
|
||||||
<li>5. MAERSK Line</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>APL (American President Lines) Shipping Lines</li>
|
||||||
|
<li>Wallem Philippines Shipping Inc.</li>
|
||||||
|
<li>Wan Hai Lines</li>
|
||||||
|
<li>Evergreen Shipping Agency Phils., Corp.</li>
|
||||||
|
<li>KMTC Philippines Corp.</li>
|
||||||
|
<li>MOL Philippines Inc.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Shipping lines to avoid are:</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>SITC Container Lines Phils., Inc.</li>
|
||||||
|
<li>COSCO Philippines Shipping, Inc.</li>
|
||||||
|
<li>Sky International Inc.</li>
|
||||||
|
<li>MCC Transport</li>
|
||||||
|
<li>Maersk Line</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
</div>
|
</div>
|
||||||
<p><em>*NON-COMPLIANCE TO INSTRUCTIONS WOULD MEAN NON-ACCEPTANCE OF DELIVERIES.</em></p>
|
|
||||||
<div class="conforme">
|
<div class="signature-row">
|
||||||
<p>Conforme:</p>
|
<span class="field-label">Supplier:</span>
|
||||||
<span>Supplier</span>
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,101 +1,175 @@
|
|||||||
<style>
|
<title>Shipping Instructions – Annex A LCL</title>
|
||||||
|
<style>
|
||||||
body {
|
body {
|
||||||
font-family: Arial, sans-serif;
|
font-family: Arial, sans-serif;
|
||||||
}
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
.container-Form {
|
|
||||||
max-width: 1000px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
text-align: right;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header p {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.supplier {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.instructions p {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul {
|
.title {
|
||||||
list-style: none;
|
text-align: center;
|
||||||
padding-left: 20px;
|
font-weight: bold;
|
||||||
margin-bottom: 20px;
|
font-size: 18px;
|
||||||
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.instructions ul li {
|
.field-row {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shipping-address {
|
.field-label {
|
||||||
margin-bottom: 20px;
|
font-weight: bold;
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme {
|
|
||||||
margin-top: 40px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conforme span {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 200px;
|
min-width: 140px;
|
||||||
border-top: 1px solid black;
|
}
|
||||||
text-align: center;
|
|
||||||
|
.line {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
min-width: 300px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-address {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.non-compliance {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-section {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.signature-row {
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
|
||||||
<div class="instructions">
|
<div class="field-row">
|
||||||
<p>SHIPPING INSTRUCTIONS:</p>
|
<span class="field-label">Mode of Shipment:</span>
|
||||||
<p>1.) IN COMPLIANCE WITH FDA GMP PIC/S STANDARD FOR ALL MANUFACTURING COMPANY, CONTAINERS OF ACTIVE PHARMACEUTICAL INGREDIENTS (API), AS WELL AS EXCIPIENTS SHOULD BEAR IN THE LABEL THE FOLLOWING INFORMATION:</p>
|
<span>LCL</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Shipping Instructions</div>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Kindly furnish in advance a copy of the shipping documents for checking and approval prior to dispatch.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Original copies of the shipping documents such as Invoice, Packing List, Certificate of Analysis, and applicable trade or origin documents should be couriered/sent to:
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<div class="company-address">
|
||||||
|
<strong>LLOYD LABORATORIES, INC.</strong><br />
|
||||||
|
#73 Scout Fernandez St., Brgy. Laging Handa, Quezon City 1103, Philippines<br />
|
||||||
|
Tel. No.: +632-372-3984 to 89 local 145<br />
|
||||||
|
Mobile No.: +63 946 900 8240<br />
|
||||||
|
Contact Person: Ms. Marilou Pangilinan
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section-title">Trade and Shipping Documents</div>
|
||||||
|
|
||||||
|
<p>Please provide the following documents, as applicable:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>*NAME OF MANUFACTURER WITH COMPLETE ADDRESS AND CONTACT NUMBERS</li>
|
<li>Commercial Invoice</li>
|
||||||
<li>*PRODUCT NAME</li>
|
<li>Packing List</li>
|
||||||
<li>*GROSS WEIGHT/NET WEIGHT</li>
|
<li>Product brochures</li>
|
||||||
<li>*MANUFACTURING DATE</li>
|
<li>Product Manuals</li>
|
||||||
<li>*EXPIRATION DATE</li>
|
<li>Insurance Certificate, if applicable</li>
|
||||||
<li>*BATCH/LOT NO</li>
|
<li>Bill of Lading for sea shipments</li>
|
||||||
<li>*STORAGE REQUIREMENT</li>
|
<li>Certificate of Origin / preferential trade form, depending on country of export</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>2.) CERTIFICATE OF ANALYSIS SHOULD BE IN COMPANY'S LETTERHEAD (MANUFACTURER) WITH COMPLETE ADDRESS AND CONTACT NUMBER, SPECIFICATIONS WITH RESULTS, STATEMENT OF CONFORMANCE, REFERENCE OFFICIAL MONOGRAPH, SIGNATURE OF THE ANALYST AND APPROVING AUTHORITY.</p>
|
|
||||||
<p>3.) THE MANUFACTURING AND EXPIRATION DATE OF THE MATERIAL SHOULD BE MORE THAN 3 YEARS BUT NOT LESS THAN 1 YEAR.</p>
|
<div class="section-title">Preferential Trade Forms</div>
|
||||||
<p>4.) GOODS TO BE DELIVERED SHOULD COME FROM ONE (1) BATCH ONLY.</p>
|
|
||||||
<p>5.) KINDLY FURNISH IN ADVANCE, COPY OF THE SHIPPING DOCUMENTS FOR CHECKING AND APPROVAL PRIOR TO DESPATCH.</p>
|
<p>
|
||||||
<p>6.) ORIGINAL COPIES OF THE SHIPPING DOCUMENTS (INVOICE, PACKING LIST, FORM AI AND COA) SHOULD BE COURIERED/SENT TO:</p>
|
Use the applicable preferential trade form or certificate of origin depending on the country of shipment:
|
||||||
</div>
|
</p>
|
||||||
<div class="shipping-address">
|
|
||||||
<p>LLOYD LABORATORIES, INC. WITH ADDRESS AT #73 SCOUT FERNANDEZ ST., BRGY. LAGING HANDA, QUEZON CITY 1103, PHILIPPINES.</p>
|
|
||||||
<p>TEL NO: +632-372-3984 TO 89 LOCAL 103 MOBILE NUMBER: +63922-899-6318</p>
|
|
||||||
<p>CONTACT PERSON: TERESA MANIO</p>
|
|
||||||
</div>
|
|
||||||
<div class="instructions">
|
|
||||||
<p>7.) FOR LESS THAN CONTAINER LOAD, KINDLY SEE BELOW PREFERRED SHIPPING LINES AND WAREHOUSE FOR CHEAPER INBOUND CHARGES:</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>*OCEANLINK FORWARDERS & SERVICES PHILS. INC.</li>
|
<li>China: Form E / China-ASEAN Certificate of Origin</li>
|
||||||
<li>*CON-PAC WAREHOUSING INC.</li>
|
<li>India: Form AI / ASEAN-India Certificate of Origin</li>
|
||||||
<li>*SAFEWAY PHILIPPINES FREIGHT CO., INC.</li>
|
<li>Thailand: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>*PHILIPPINE CONSOLIDATED INVESTORS CORP.</li>
|
<li>Vietnam: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
<li>*PAC-ATLANTIC LINES (PHILS.)INC.</li>
|
<li>Indonesia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Malaysia: Form D / ASEAN Trade in Goods Agreement (ATIGA) Certificate of Origin</li>
|
||||||
|
<li>Other countries: Standard Certificate of Origin, if no preferential form applies</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<div class="section-title">Sea Shipments</div>
|
||||||
|
|
||||||
|
<div class="section-title" style="margin-top: 10px;">LCL Shipments</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
For less than container load (LCL) shipments, the preferred forwarders and warehouses for cheaper inbound charges are:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Oceanlink Forwarders & Services Phils. Inc.</li>
|
||||||
|
<li>Con-Pac Warehousing Inc.</li>
|
||||||
|
<li>Safeway Philippines Freight Co., Inc.</li>
|
||||||
|
<li>Philippine Consolidated Investors Corp.</li>
|
||||||
|
<li>Pac-Atlantic Lines (Phils.) Inc.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>LCL guideline:</strong> up to 1,000 kg and up to 5 CBM, where applicable.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="section-title">Non-Compliance</div>
|
||||||
|
|
||||||
|
<p class="non-compliance">
|
||||||
|
Non-compliance with these instructions would mean non-acceptance of deliveries.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="signature-section">
|
||||||
|
<div class="signature-row">
|
||||||
|
<strong>Conforme</strong>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Supplier:</span>
|
||||||
|
<span class="line" style="min-width: 400px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Authorized Signature:</span>
|
||||||
|
<span class="line" style="min-width: 340px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="signature-row">
|
||||||
|
<span class="field-label">Date:</span>
|
||||||
|
<span class="line" style="min-width: 220px;"></span>
|
||||||
</div>
|
</div>
|
||||||
<p><em>*NON-COMPLIANCE TO INSTRUCTIONS WOULD MEAN NON-ACCEPTANCE OF DELIVERIES.</em></p>
|
|
||||||
<div class="conforme">
|
|
||||||
<p>Conforme:</p>
|
|
||||||
<span>Supplier</span>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
|
|||||||
@ -22,8 +22,8 @@
|
|||||||
</th>
|
</th>
|
||||||
<th>ItemNo</th>
|
<th>ItemNo</th>
|
||||||
<th>ItemName</th>
|
<th>ItemName</th>
|
||||||
|
<th>Description</th>
|
||||||
<th>CategoryName</th>
|
<th>CategoryName</th>
|
||||||
<th>PRTypeId</th>
|
|
||||||
<th>Qty</th>
|
<th>Qty</th>
|
||||||
<th>Action</th>
|
<th>Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
@ -139,5 +139,5 @@
|
|||||||
</div>
|
</div>
|
||||||
<link href="~/css/item/cartv2.css" rel="stylesheet" />
|
<link href="~/css/item/cartv2.css" rel="stylesheet" />
|
||||||
@await Html.PartialAsync("PagesView/Item/_Scripts")
|
@await Html.PartialAsync("PagesView/Item/_Scripts")
|
||||||
<script src="~/JsFunctions/Items/ItemCartV4.js"></script>
|
<script src="~/JsFunctions/Items/ItemCartV5.js"></script>
|
||||||
</body>
|
</body>
|
||||||
@ -1,50 +1,78 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row table-container shadow-lg p-2 mb-3 bg-white rounded">
|
<div class="row table-container shadow-lg p-2 mb-3 bg-white rounded">
|
||||||
<div class="header-container">
|
<div class="header-container" style="margin-bottom:10px">
|
||||||
<h2 id="customPOHeading">Custom P.O. Creation</h2>
|
<h2 id="customPOHeading">Custom P.O. Creation</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row" style="margin-bottom:10px">
|
||||||
<!-- Left side (half of the row) -->
|
<!-- Left side (half of the row) -->
|
||||||
<div class="col-6">
|
<div class="col-12 mb-2">
|
||||||
<div class="row">
|
<div class="row align-items-end">
|
||||||
<div class="col-4">
|
|
||||||
|
<!-- PO No -->
|
||||||
|
<div class="col-md-2">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="poNo">PO No.</label>
|
<label for="poNo">
|
||||||
|
PO No.
|
||||||
<i class="bx bx-pencil"
|
<i class="bx bx-pencil"
|
||||||
style="color: orange; font-size: 1.2rem; cursor: pointer;"
|
style="color: orange; font-size: 1.2rem; cursor: pointer;"
|
||||||
onclick="enablePONoAutocomplete()"></i>
|
onclick="enablePONoAutocomplete()"></i>
|
||||||
|
</label>
|
||||||
|
|
||||||
<input type="search" readonly id="poNo" class="form-control">
|
<input type="search" readonly id="poNo" class="form-control">
|
||||||
<input type="hidden" id="poId" class="form-control" name="poId" />
|
|
||||||
|
<input type="hidden"
|
||||||
|
id="poId"
|
||||||
|
class="form-control"
|
||||||
|
name="poId" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
|
||||||
|
<!-- Final PO No -->
|
||||||
|
<div class="col-md-2">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="poNoFinal">Final PO No.</label>
|
<label for="poNoFinal">Final PO No.</label>
|
||||||
<input readonly id="poNoFinal" class="form-control">
|
<input readonly id="poNoFinal" class="form-control">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
|
||||||
|
<!-- PO Type -->
|
||||||
|
<div class="col-md-2">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="poType">PO Type</label>
|
<label for="poType">PO Type</label>
|
||||||
<select class="form-control" name="poType" id="poType"
|
|
||||||
|
<select class="form-control"
|
||||||
|
name="poType"
|
||||||
|
id="poType"
|
||||||
onchange="customFormPOElemComponent(this.value)">
|
onchange="customFormPOElemComponent(this.value)">
|
||||||
<option value="0" disabled selected>-Select PO Type-</option>
|
|
||||||
|
<option value="0" disabled selected>
|
||||||
|
-Select PO Type-
|
||||||
|
</option>
|
||||||
|
|
||||||
<option value="1">SI</option>
|
<option value="1">SI</option>
|
||||||
<option value="2">DR</option>
|
<option value="2">DR</option>
|
||||||
<option value="3">Import</option>
|
<option value="3">Import</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Supplier (Wider) -->
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="supplierName">Supplier</label>
|
||||||
|
|
||||||
|
<input type="search"
|
||||||
|
id="supplierName"
|
||||||
|
class="form-control"
|
||||||
|
name="supplierName" />
|
||||||
|
|
||||||
|
<input type="hidden"
|
||||||
|
id="supplierId"
|
||||||
|
name="supplierId" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Right side (half of the row) -->
|
|
||||||
<div class="col-6">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="supplierName">Supplier</label>
|
|
||||||
<input type="search" id="supplierName" class="form-control mb-2" name="supplierName" />
|
|
||||||
<input type="hidden" id="supplierId" class="form-control" name="supplierId" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -55,7 +83,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="table-container shadow-lg p-3 mb-3 bg-white rounded">
|
<div class="table-container shadow-lg p-3 mb-3 bg-white rounded">
|
||||||
<button type="button" class="btn btn-success"
|
<button type="button" class="btn-choose"
|
||||||
id="chooseItem" onclick="viewPRWOCanvass()">
|
id="chooseItem" onclick="viewPRWOCanvass()">
|
||||||
Choose Item
|
Choose Item
|
||||||
</button>
|
</button>
|
||||||
@ -94,10 +122,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Modal OtherCharges-->
|
<!-- Modal OtherCharges-->
|
||||||
<div class="modal fade custom-modal-backdrop" id="addCharges"
|
<div class="modal fade custom-modal-backdrop" id="addCharges"
|
||||||
tabindex="-1" aria-labelledby="addChargesLabel" data-bs-backdrop="static">
|
tabindex="-1" aria-labelledby="addChargesLabel" data-bs-backdrop="static">
|
||||||
<div class="modal-dialog modal-xl" role="document">
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3 id="addChargesLabel" class="modal-title">
|
<h3 id="addChargesLabel" class="modal-title">
|
||||||
@ -165,9 +194,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input hidden id="poTypeId"/>
|
<input hidden id="poTypeId"/>
|
||||||
<link href="~/css/po/CustomPOV2.css" rel="stylesheet" />
|
<link href="~/css/po/CustomPOV3.css" rel="stylesheet" />
|
||||||
<script src="~/JsFunctions/PO/CustomPOV8.js"></script>
|
<script src="~/JsFunctions/PO/CustomPOV9.js"></script>
|
||||||
@await Html.PartialAsync("PagesView/PR/_PRWOCanvass")
|
@await Html.PartialAsync("PagesView/PR/_PRWOCanvass")
|
||||||
@await Html.PartialAsync("PagesView/PO/_POScripts")
|
@await Html.PartialAsync("PagesView/PO/_POScripts")
|
||||||
</body>
|
</body>
|
||||||
@ -236,17 +236,28 @@
|
|||||||
<div class="second-page">
|
<div class="second-page">
|
||||||
<div class="container-Form">
|
<div class="container-Form">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<p>ANNEX A</p>
|
<p class="title">Shipping Instructions – Annex A</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="supplier">
|
@* <div </div> *@
|
||||||
<p>PO NO.: <strong id="poNo-C-2ndPage"></strong></p>
|
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="label">PO No.:</span>
|
||||||
|
<span class="line" id="poNo-C-2ndPage" style="min-width: 220px;"></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="supplier">
|
|
||||||
<p>SUPPLIER: <strong id="supplier-C-2ndPage"></strong></p>
|
<div class="field-row">
|
||||||
|
<span class="label">Supplier:</span>
|
||||||
|
<span class="line" id="supplier-C-2ndPage" style="min-width: 350px;"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field-row">
|
||||||
|
<span class="label">Country of Origin:</span>
|
||||||
|
<span class="line" id="countryOrigin-C-2ndPage" style="min-width: 300px;"></span>
|
||||||
</div>
|
</div>
|
||||||
<!-- Toggle Button -->
|
<!-- Toggle Button -->
|
||||||
<button id="toggleShippingInstructions" class="btn btn-secondary" onclick="toggleShippingInstructions()">Hide Shipping Instructions</button>
|
<button id="toggleShippingInstructions" class="btn btn-secondary" onclick="toggleShippingInstructions()">Hide Shipping Instructions</button>
|
||||||
<div id="shippingInstructionsContainer">
|
<div id="shippingInstructionsContainer">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -305,10 +316,15 @@
|
|||||||
<select class="form-control" name="shippingInstructionId" id="shippingInstructionId"
|
<select class="form-control" name="shippingInstructionId" id="shippingInstructionId"
|
||||||
style="margin-bottom:5px;">
|
style="margin-bottom:5px;">
|
||||||
<option disabled>-Select Shipping Instruction-</option>
|
<option disabled>-Select Shipping Instruction-</option>
|
||||||
<option value="1">AIR</option>
|
<option disabled selected>— Select —</option>
|
||||||
<option value="2">COURIER</option>
|
<option value="1">General AIR</option>
|
||||||
<option value="3">SEA FCL</option>
|
<option value="2">General COURIER</option>
|
||||||
<option value="4">SEA LCL</option>
|
<option value="3">General SEA FCL</option>
|
||||||
|
<option value="4">General SEA LCL</option>
|
||||||
|
<option value="5">RawMat AIR</option>
|
||||||
|
<option value="6">RawMat COURIER</option>
|
||||||
|
<option value="7">RawMat SEA FCL</option>
|
||||||
|
<option value="8">RawMat SEA LCL</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|||||||
@ -11,11 +11,11 @@
|
|||||||
<script src="~/jsfunctions/common/termsV2.js"></script>
|
<script src="~/jsfunctions/common/termsV2.js"></script>
|
||||||
<script src="~/jsfunctions/common/ColumnCommonV2.js"></script>
|
<script src="~/jsfunctions/common/ColumnCommonV2.js"></script>
|
||||||
<script src="~/jsfunctions/common/genericcrud.js"></script>
|
<script src="~/jsfunctions/common/genericcrud.js"></script>
|
||||||
<script src="~/jsfunctions/common/ParamConfigV2.js"></script>
|
<script src="~/jsfunctions/common/ParamConfigV3.js"></script>
|
||||||
<script src="~/jsfunctions/common/PostPutV2.js"></script>
|
<script src="~/jsfunctions/common/PostPutV3.js"></script>
|
||||||
<script src="~/jsfunctions/common/PRWOCanvassV2.js"></script>
|
<script src="~/jsfunctions/common/PRWOCanvassV2.js"></script>
|
||||||
|
|
||||||
<script src="~/jsfunctions/po/POButtonV9.js"></script>
|
<script src="~/jsfunctions/po/POButton.js"></script>
|
||||||
<script src="~/jsfunctions/po/PrintingV2.js"></script>
|
<script src="~/jsfunctions/po/PrintingV2.js"></script>
|
||||||
<script src="~/JsFunctions/PO/POColumn.js"></script>
|
<script src="~/JsFunctions/PO/POColumn.js"></script>
|
||||||
<script src="~/jsfunctions/po/ApiV5.js"></script>
|
<script src="~/jsfunctions/po/ApiV5.js"></script>
|
||||||
@ -23,8 +23,8 @@
|
|||||||
<script src="~/jsfunctions/po/POVarV6.js"></script>
|
<script src="~/jsfunctions/po/POVarV6.js"></script>
|
||||||
<script src="~/jsfunctions/po/POViewV5.js"></script>
|
<script src="~/jsfunctions/po/POViewV5.js"></script>
|
||||||
<script src="~/jsfunctions/po/PopulateDopdownV4.js"></script>
|
<script src="~/jsfunctions/po/PopulateDopdownV4.js"></script>
|
||||||
<script src="~/jsfunctions/po/POPutPostV4.js"></script>
|
<script src="~/jsfunctions/po/POPutPostV5.js"></script>
|
||||||
<script src="~/jsfunctions/po/rowCallBackV5.js"></script>
|
<script src="~/jsfunctions/po/rowCallBackV6.js"></script>
|
||||||
|
|
||||||
<script src="~/jsfunctions/utilities/NewStyle.js"></script>
|
<script src="~/jsfunctions/utilities/NewStyle.js"></script>
|
||||||
<script src="~/jsfunctions/utilities/utilsV3.js"></script>
|
<script src="~/jsfunctions/utilities/utilsV3.js"></script>
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<title>@ViewData["Title"] - LLI Purchasing Non-Inventory System</title>
|
<title>@ViewData["Title"] - LLI Purchasing Non-Inventory System</title>
|
||||||
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
|
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
|
||||||
<link rel="stylesheet" href="~/css/sideBarStyleV2.css" />
|
<link rel="stylesheet" href="~/css/sideBarStyleV2.css" />
|
||||||
<link rel="stylesheet" href="~/css/siteV7.css" asp-append-version="true" />
|
<link rel="stylesheet" href="~/css/siteV8.css" asp-append-version="true" />
|
||||||
<link rel="stylesheet" href="~/css/spinner.css" />
|
<link rel="stylesheet" href="~/css/spinner.css" />
|
||||||
<link href="~/lib/font-awesome/css/all.css" rel="stylesheet" />
|
<link href="~/lib/font-awesome/css/all.css" rel="stylesheet" />
|
||||||
<link href="~/lib/font-awesome/css/all.min.css" rel="stylesheet" />
|
<link href="~/lib/font-awesome/css/all.min.css" rel="stylesheet" />
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<script src="~/js/sidebar.js"></script>
|
<script src="~/js/sidebar.js"></script>
|
||||||
<script src="~/Datatables/DataTables-1.13.6/js/jquery.dataTables.min.js"></script>
|
<script src="~/Datatables/DataTables-1.13.6/js/jquery.dataTables.min.js"></script>
|
||||||
<script src="~/datatables/responsive-2.5.0/js/datatables.responsive.min.js"></script>
|
<script src="~/datatables/responsive-2.5.0/js/datatables.responsive.min.js"></script>
|
||||||
<script src="~/jsfunctions/account/sessionTimeoutV3.js"></script>
|
<script src="~/jsfunctions/account/sessionTimeoutV4.js"></script>
|
||||||
<script src="~/lib/jquery-ui-1132custom/jquery-ui.min.js"></script>
|
<script src="~/lib/jquery-ui-1132custom/jquery-ui.min.js"></script>
|
||||||
|
|
||||||
<!-- DataTables Buttons and Export JS -->
|
<!-- DataTables Buttons and Export JS -->
|
||||||
|
|||||||
@ -52,24 +52,7 @@ var colOnColDef = [
|
|||||||
visible: false,
|
visible: false,
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
var colAccountDetail = [
|
|
||||||
{
|
|
||||||
data: 'userAccessId',
|
|
||||||
render: function () {
|
|
||||||
return '<input type="checkbox" class="select-Access-checkbox" />';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ data: 'accessType' },
|
|
||||||
{ data: 'pageName' },
|
|
||||||
{ data: 'isActive' },
|
|
||||||
{
|
|
||||||
data: null,
|
|
||||||
render: function (data, type, row) {
|
|
||||||
return renderAccessDetailbtn(data, row);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ data: 'contAccId', visible: false },
|
|
||||||
];
|
|
||||||
var colAccountDetailNot = [
|
var colAccountDetailNot = [
|
||||||
{
|
{
|
||||||
data: 'userAccessId',
|
data: 'userAccessId',
|
||||||
|
|||||||
@ -1,46 +1,42 @@
|
|||||||
function postPutAccessRights(IsNotExist) {
|
function postPutAccessRights(IsNotExist) {
|
||||||
loader = $('#overlay, #loader').css('z-index', 1070);
|
loader = $('#overlay, #loader').css('z-index', 1070);
|
||||||
|
|
||||||
var selectedCheckboxes = IsNotExist ? $('.select-NotAccess-checkbox:checked') :
|
const selectedItems = Object.values(selectedProductsMap);
|
||||||
$('.select-Access-checkbox:checked');
|
if (selectedItems.length === 0) {
|
||||||
var dynamicTable = IsNotExist ? notAccessDataTable : accessDataTable;
|
showToast('warning', 'Please select items for access first!', 'User access failed', 4000);
|
||||||
var userRightsList = [];
|
|
||||||
selectedCheckboxes.each(function () {
|
|
||||||
var $row = $(this).closest('tr');
|
|
||||||
var rowIndex = dynamicTable.row($row).index();
|
|
||||||
var rowData = dynamicTable.row(rowIndex).data();
|
|
||||||
var userAccessId = IsNotExist ? 13 : rowData.userAccessId;
|
|
||||||
var contAccId = rowData.contAccId;
|
|
||||||
var accessTypeId = rowData.accessTypeId;
|
|
||||||
var isActive = rowData.isActive;
|
|
||||||
var itemData = {
|
|
||||||
UserAccessId: userAccessId,
|
|
||||||
ContAccId: contAccId,
|
|
||||||
AccessTypeId: accessTypeId,
|
|
||||||
IsActive: isActive,
|
|
||||||
};
|
|
||||||
userRightsList.push(itemData);
|
|
||||||
});
|
|
||||||
if (selectedCheckboxes.length <= 0) {
|
|
||||||
alert('No selected item!');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const confirmation = confirm('Are you sure you want to proceed?');
|
|
||||||
|
|
||||||
if (confirmation) {
|
const userRightsList = selectedItems.map(item => {
|
||||||
|
return {
|
||||||
|
UserAccessId: item.userAccessId,
|
||||||
|
ContAccId: item.contAccId,
|
||||||
|
AccessTypeId: item.accessTypeId,
|
||||||
|
IsActive: true,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
console.log(userRightsList);
|
||||||
|
|
||||||
|
showConfirmation({
|
||||||
|
title: 'User Access Rights',
|
||||||
|
message: 'Are you sure you want to proceed? This action cannot be undone.',
|
||||||
|
type: 'warning',
|
||||||
|
confirmText: 'Yes',
|
||||||
|
cancelText: 'No'
|
||||||
|
}).then((confirmed) => {
|
||||||
|
|
||||||
|
if (confirmed) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/Account/PutPostUserAccess',
|
url: '/Account/PutPostUserAccess',
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: { userRightsList, IsNotExist, UserId },
|
data: { userRightsList, IsNotExist, UserId },
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
$('#viewItemList').modal('hide');
|
closeModal('modalAccess');
|
||||||
notAccessDataTable.ajax.reload();
|
|
||||||
accessDataTable.ajax.reload();
|
accessDataTable.ajax.reload();
|
||||||
alert('Pages Successfully Added!');
|
showToast('success', 'Access rights saved!', 'User access', 4000);
|
||||||
} else {
|
} else {
|
||||||
alert('Failed: ' + response.response);
|
showToast('error', response.response, 'User access failed', 4000);
|
||||||
notAccessDataTable.ajax.reload();
|
|
||||||
accessDataTable.ajax.reload();
|
accessDataTable.ajax.reload();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -52,4 +48,5 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
@ -1,31 +1,31 @@
|
|||||||
//navigate the picture
|
//navigate the picture
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
//document.addEventListener("DOMContentLoaded", function () {
|
||||||
var profilePictureImage = document.getElementById("profilePictureImage");
|
// var profilePictureImage = document.getElementById("profilePictureImage");
|
||||||
var profilePictureInput = document.getElementById("profilePictureInput");
|
// var profilePictureInput = document.getElementById("profilePictureInput");
|
||||||
|
|
||||||
// Set a default image source for the profile picture
|
// // Set a default image source for the profile picture
|
||||||
profilePictureImage.src = "/Content/Images/404userImage.jpg";
|
// profilePictureImage.src = "wwwroot/Content/Images/404userImage.jpg";
|
||||||
|
|
||||||
// Add a click event listener to the profile picture to trigger the file input
|
// // Add a click event listener to the profile picture to trigger the file input
|
||||||
profilePictureImage.addEventListener("click", function () {
|
// profilePictureImage.addEventListener("click", function () {
|
||||||
profilePictureInput.click();
|
// profilePictureInput.click();
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Add a change event listener to the file input
|
// // Add a change event listener to the file input
|
||||||
profilePictureInput.addEventListener("change", function () {
|
// profilePictureInput.addEventListener("change", function () {
|
||||||
var ProfilePicture = profilePictureInput.files[0];
|
// var ProfilePicture = profilePictureInput.files[0];
|
||||||
|
|
||||||
if (ProfilePicture) {
|
// if (ProfilePicture) {
|
||||||
// Display the selected image
|
// // Display the selected image
|
||||||
var imageURL = URL.createObjectURL(ProfilePicture);
|
// var imageURL = URL.createObjectURL(ProfilePicture);
|
||||||
profilePictureImage.src = imageURL;
|
// profilePictureImage.src = imageURL;
|
||||||
} else {
|
// } else {
|
||||||
// No file selected, revert to the default image
|
// // No file selected, revert to the default image
|
||||||
console.log("No file selected, using default image");
|
// console.log("No file selected, using default image");
|
||||||
profilePictureImage.src = "/Content/Images/404userImage.jpg";
|
// profilePictureImage.src = "wwwroot/Content/Images/404userImage.jpg";
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
});
|
//});
|
||||||
|
|
||||||
let jsonObj = {};
|
let jsonObj = {};
|
||||||
|
|
||||||
@ -39,134 +39,134 @@ function renderAccessDetailbtn(data, row) {
|
|||||||
|
|
||||||
return buttonsHtml;
|
return buttonsHtml;
|
||||||
}
|
}
|
||||||
function viewUserAccessNotExist() {
|
////function viewUserAccessNotExist() {
|
||||||
loader = $('#overlay, #loader');
|
//// loader = $('#overlay, #loader');
|
||||||
$('#viewUserAccessNotExist').modal('show');
|
//// $('#viewUserAccessNotExist').modal('show');
|
||||||
$('#viewUserAccessNotExist').css('z-index', 1060);
|
//// $('#viewUserAccessNotExist').css('z-index', 1060);
|
||||||
tableElement = $('#NotAccessDataTable');
|
//// tableElement = $('#NotAccessDataTable');
|
||||||
tableDestroy(tableElement);
|
//// tableDestroy(tableElement);
|
||||||
var submitButton = $('#btnNotAccess');
|
//// var submitButton = $('#btnNotAccess');
|
||||||
var totalSelectedLabel = $('#totalSelNotAccess');
|
//// var totalSelectedLabel = $('#totalSelNotAccess');
|
||||||
let IsNotExist = true;
|
//// let IsNotExist = true;
|
||||||
notAccessDataTable = tableElement.DataTable({
|
//// notAccessDataTable = tableElement.DataTable({
|
||||||
ajax: $.extend({
|
//// ajax: $.extend({
|
||||||
url: '/Account/GetUserRights',
|
//// url: '/Account/GetUserRights',
|
||||||
type: 'POST',
|
//// type: 'POST',
|
||||||
data: { UserId, IsNotExist },
|
//// data: { UserId, IsNotExist },
|
||||||
}, beforeComplete(loader)),
|
//// }, beforeComplete(loader)),
|
||||||
language: {
|
//// language: {
|
||||||
emptyTable: "No record available"
|
//// emptyTable: "No record available"
|
||||||
},
|
//// },
|
||||||
initComplete: function () {
|
//// initComplete: function () {
|
||||||
var api = this.api();
|
//// var api = this.api();
|
||||||
var data = api.ajax.json();
|
//// var data = api.ajax.json();
|
||||||
if (!data || !data.data || data.data === "No Data") {
|
//// if (!data || !data.data || data.data === "No Data") {
|
||||||
$('.dataTables_empty').html("No record available");
|
//// $('.dataTables_empty').html("No record available");
|
||||||
}
|
//// }
|
||||||
updateSubmitBtnVisib();
|
//// updateSubmitBtnVisib();
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
},
|
//// },
|
||||||
columns: colAccountDetailNot,
|
//// columns: colAccountDetailNot,
|
||||||
responsive: true,
|
//// responsive: true,
|
||||||
error: errorHandler
|
//// error: errorHandler
|
||||||
});
|
//// });
|
||||||
function updateSubmitBtnVisib() {
|
//// function updateSubmitBtnVisib() {
|
||||||
var isEmpty = notAccessDataTable.data().length === 0;
|
//// var isEmpty = notAccessDataTable.data().length === 0;
|
||||||
submitButton.toggle(!isEmpty);
|
//// submitButton.toggle(!isEmpty);
|
||||||
}
|
//// }
|
||||||
$('#NotAccessDataTable').on('change', '.select-NotAccess-checkbox', function () {
|
//// $('#NotAccessDataTable').on('change', '.select-NotAccess-checkbox', function () {
|
||||||
var row = $(this).closest('tr');
|
//// var row = $(this).closest('tr');
|
||||||
if ($(this).prop('checked')) {
|
//// if ($(this).prop('checked')) {
|
||||||
row.addClass('selected-row');
|
//// row.addClass('selected-row');
|
||||||
} else {
|
//// } else {
|
||||||
row.removeClass('selected-row');
|
//// row.removeClass('selected-row');
|
||||||
}
|
//// }
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
});
|
//// });
|
||||||
|
|
||||||
$('#selectAllCheckboxNotAccess').on('change', function () {
|
//// $('#selectAllCheckboxNotAccess').on('change', function () {
|
||||||
var isChecked = $(this).prop('checked');
|
//// var isChecked = $(this).prop('checked');
|
||||||
$('.select-NotAccess-checkbox').prop('checked', isChecked);
|
//// $('.select-NotAccess-checkbox').prop('checked', isChecked);
|
||||||
if (isChecked) {
|
//// if (isChecked) {
|
||||||
$('#NotAccessDataTable tbody tr').addClass('selected-row');
|
//// $('#NotAccessDataTable tbody tr').addClass('selected-row');
|
||||||
} else {
|
//// } else {
|
||||||
$('#NotAccessDataTable tbody tr').removeClass('selected-row');
|
//// $('#NotAccessDataTable tbody tr').removeClass('selected-row');
|
||||||
}
|
//// }
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
});
|
//// });
|
||||||
function updateSelectedCount() {
|
//// function updateSelectedCount() {
|
||||||
var totalSelected = $('.select-NotAccess-checkbox:checked').length;
|
//// var totalSelected = $('.select-NotAccess-checkbox:checked').length;
|
||||||
totalSelectedLabel.text(totalSelected);
|
//// totalSelectedLabel.text(totalSelected);
|
||||||
}
|
//// }
|
||||||
}
|
////}
|
||||||
function viewUserAccess(data) {
|
////function viewUserAccess(data) {
|
||||||
loader = $('#overlay, #loader');
|
//// loader = $('#overlay, #loader');
|
||||||
$('#viewUserAccess').modal('show');
|
//// $('#viewUserAccess').modal('show');
|
||||||
$('#viewUserAccess').css('z-index', 1050);
|
//// $('#viewUserAccess').css('z-index', 1050);
|
||||||
tableElement = $('#AccessDataTable');
|
//// tableElement = $('#AccessDataTable');
|
||||||
tableDestroy(tableElement);
|
//// tableDestroy(tableElement);
|
||||||
var submitButton = $('#btnAccess');
|
//// var submitButton = $('#btnAccess');
|
||||||
var totalSelectedLabel = $('#totalSelAccess');
|
//// var totalSelectedLabel = $('#totalSelAccess');
|
||||||
UserId = data.id;
|
//// UserId = data.id;
|
||||||
//CanvassId = data.canvassId;
|
//// //CanvassId = data.canvassId;
|
||||||
$('#ua-EmailAddress').val(data.email);
|
//// $('#ua-EmailAddress').val(data.email);
|
||||||
$('#ua-FullName').val(data.fullName);
|
//// $('#ua-FullName').val(data.fullName);
|
||||||
$('#uan-EmailAddress').val(data.email);
|
//// $('#uan-EmailAddress').val(data.email);
|
||||||
$('#uan-FullName').val(data.fullName);
|
//// $('#uan-FullName').val(data.fullName);
|
||||||
accessDataTable = tableElement.DataTable({
|
//// accessDataTable = tableElement.DataTable({
|
||||||
ajax: $.extend({
|
//// ajax: $.extend({
|
||||||
url: '/Account/GetUserRights',
|
//// url: '/Account/GetUserRights',
|
||||||
type: 'POST',
|
//// type: 'POST',
|
||||||
data: { UserId },
|
//// data: { UserId },
|
||||||
}, beforeComplete(loader)),
|
//// }, beforeComplete(loader)),
|
||||||
language: {
|
//// language: {
|
||||||
emptyTable: "No record available"
|
//// emptyTable: "No record available"
|
||||||
},
|
//// },
|
||||||
initComplete: function () {
|
//// initComplete: function () {
|
||||||
var api = this.api();
|
//// var api = this.api();
|
||||||
var data = api.ajax.json();
|
//// var data = api.ajax.json();
|
||||||
if (!data || !data.data || data.data === "No Data") {
|
//// if (!data || !data.data || data.data === "No Data") {
|
||||||
$('.dataTables_empty').html("No record available");
|
//// $('.dataTables_empty').html("No record available");
|
||||||
}
|
//// }
|
||||||
updateSubmitBtnVisib();
|
//// updateSubmitBtnVisib();
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
},
|
//// },
|
||||||
columns: colAccountDetail,
|
//// columns: colAccountDetail,
|
||||||
responsive: true,
|
//// responsive: true,
|
||||||
error: errorHandler
|
//// error: errorHandler
|
||||||
});
|
//// });
|
||||||
function updateSubmitBtnVisib() {
|
//// function updateSubmitBtnVisib() {
|
||||||
var isEmpty = accessDataTable.data().length === 0;
|
//// var isEmpty = accessDataTable.data().length === 0;
|
||||||
submitButton.toggle(!isEmpty);
|
//// submitButton.toggle(!isEmpty);
|
||||||
}
|
//// }
|
||||||
$('#AccessDataTable').on('change', '.select-Access-checkbox', function () {
|
//// $('#AccessDataTable').on('change', '.select-Access-checkbox', function () {
|
||||||
var row = $(this).closest('tr');
|
//// var row = $(this).closest('tr');
|
||||||
if ($(this).prop('checked')) {
|
//// if ($(this).prop('checked')) {
|
||||||
row.addClass('selected-row');
|
//// row.addClass('selected-row');
|
||||||
} else {
|
//// } else {
|
||||||
row.removeClass('selected-row');
|
//// row.removeClass('selected-row');
|
||||||
}
|
//// }
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
});
|
//// });
|
||||||
|
|
||||||
$('#selectAllCheckboxAccess').on('change', function () {
|
//// $('#selectAllCheckboxAccess').on('change', function () {
|
||||||
var isChecked = $(this).prop('checked');
|
//// var isChecked = $(this).prop('checked');
|
||||||
$('.select-Access-checkbox').prop('checked', isChecked);
|
//// $('.select-Access-checkbox').prop('checked', isChecked);
|
||||||
if (isChecked) {
|
//// if (isChecked) {
|
||||||
$('#AccessDataTable tbody tr').addClass('selected-row');
|
//// $('#AccessDataTable tbody tr').addClass('selected-row');
|
||||||
} else {
|
//// } else {
|
||||||
$('#AccessDataTable tbody tr').removeClass('selected-row');
|
//// $('#AccessDataTable tbody tr').removeClass('selected-row');
|
||||||
}
|
//// }
|
||||||
updateSelectedCount();
|
//// updateSelectedCount();
|
||||||
});
|
//// });
|
||||||
function updateSelectedCount() {
|
//// function updateSelectedCount() {
|
||||||
var totalSelected = $('.select-Access-checkbox:checked').length;
|
//// var totalSelected = $('.select-Access-checkbox:checked').length;
|
||||||
totalSelectedLabel.text(totalSelected);
|
//// totalSelectedLabel.text(totalSelected);
|
||||||
}
|
//// }
|
||||||
}
|
////}
|
||||||
function ShowNewAccess() {
|
////function ShowNewAccess() {
|
||||||
viewUserAccessNotExist();
|
//// viewUserAccessNotExist();
|
||||||
}
|
////}
|
||||||
function showUpdateUserProfile(jsonData) {
|
function showUpdateUserProfile(jsonData) {
|
||||||
jsonObj = jsonData;
|
jsonObj = jsonData;
|
||||||
|
|
||||||
@ -414,20 +414,7 @@ function addNewUser() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Use this function to populate roles
|
// Use this function to populate roles
|
||||||
function renderUserBtns(data, row) {
|
|
||||||
var jsonData = JSON.stringify(row).replace(/"/g, """);
|
|
||||||
var buttonsHtml = '';
|
|
||||||
|
|
||||||
buttonsHtml += '<button onclick="showUpdateUserProfile(' + jsonData + ')" class="btn btn-default">' +
|
|
||||||
'<i class="fa fa-pen-to-square fa-xl" style="color: #FFA500;" aria-hidden="true"></i>' +
|
|
||||||
'</button>';
|
|
||||||
|
|
||||||
buttonsHtml += '<button onclick="viewUserAccess(' + jsonData + ')" class="btn btn-default">' +
|
|
||||||
'<i class="fa-brands fa-elementor fa-xl" style="color: #008080;" aria-hidden="true"></i>' +
|
|
||||||
'</button > ';
|
|
||||||
|
|
||||||
return buttonsHtml;
|
|
||||||
}
|
|
||||||
function populateRoles() {
|
function populateRoles() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/Account/GetRoles", // Update this with your actual controller and action
|
url: "/Account/GetRoles", // Update this with your actual controller and action
|
||||||
@ -456,25 +443,25 @@ function populateRoles() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$(document).ready(function () {
|
//$(document).ready(function () {
|
||||||
loader = $('#overlay, #loader');
|
// loader = $('#overlay, #loader');
|
||||||
UserRights = document.getElementById("roleRights").value;
|
// //UserRights = document.getElementById("roleRights").value;
|
||||||
populateRoles();
|
// populateRoles();
|
||||||
userListTable = $('#UserListTable').DataTable({
|
// userListTable = $('#UserListTable').DataTable({
|
||||||
ajax: $.extend({
|
// ajax: $.extend({
|
||||||
url: '/Account/GetAllUsers',
|
// url: '/Account/GetAllUsers',
|
||||||
type: 'GET',
|
// type: 'GET',
|
||||||
}, beforeComplete(loader)),
|
// }, beforeComplete(loader)),
|
||||||
initComplete: initCompleteCallback,
|
// initComplete: initCompleteCallback,
|
||||||
columns: colOnUserList,
|
// columns: colOnUserList,
|
||||||
columnDefs: colOnColDef,
|
// columnDefs: colOnColDef,
|
||||||
language: {
|
// language: {
|
||||||
emptyTable: "No record available"
|
// emptyTable: "No record available"
|
||||||
},
|
// },
|
||||||
rowCallback: rowAccountCallback,
|
// rowCallback: rowAccountCallback,
|
||||||
responsive: true,
|
// responsive: true,
|
||||||
error: errorHandler
|
// error: errorHandler
|
||||||
});
|
// });
|
||||||
})
|
//})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// Configuration
|
// Configuration
|
||||||
const CONFIG = {
|
const CONFIG = {
|
||||||
timeoutMinutes: 120, // Total session timeout
|
timeoutMinutes: 240, // Total session timeout
|
||||||
checkIntervalSeconds: 60, // How often to check (every minute)
|
checkIntervalSeconds: 60, // How often to check (every minute)
|
||||||
warningMinutes: 5, // Warn THIS many minutes before timeout
|
warningMinutes: 5, // Warn THIS many minutes before timeout
|
||||||
logoutUrl: '/Home/Index',
|
logoutUrl: '/Home/Index',
|
||||||
@ -67,7 +67,7 @@ function showTimeoutWarning(remainingMinutes) {
|
|||||||
updateCountdown();
|
updateCountdown();
|
||||||
countdownInterval = setInterval(updateCountdown, 1000);
|
countdownInterval = setInterval(updateCountdown, 1000);
|
||||||
|
|
||||||
console.log(`Session warning shown: ${remainingMinutes} minutes remaining`);
|
//console.log(`Session warning shown: ${remainingMinutes} minutes remaining`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -11,6 +11,7 @@
|
|||||||
deliverTo: '',
|
deliverTo: '',
|
||||||
itemName: '',
|
itemName: '',
|
||||||
specification: '',
|
specification: '',
|
||||||
|
countryOrigin: '',
|
||||||
qty: 0,
|
qty: 0,
|
||||||
uomName: '',
|
uomName: '',
|
||||||
uomId: 0
|
uomId: 0
|
||||||
@ -49,6 +49,7 @@ function poValidateParameters(poTypeId, method, isItem) {
|
|||||||
profInvoiceDate: document.getElementById('piDate'),
|
profInvoiceDate: document.getElementById('piDate'),
|
||||||
shippingInstructionId: document.getElementById('shippingInstructionId'),
|
shippingInstructionId: document.getElementById('shippingInstructionId'),
|
||||||
podId: document.getElementById('podId'),
|
podId: document.getElementById('podId'),
|
||||||
|
countryOrigin: document.getElementById('countryOrigin'),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Fields specific to other poTypeId values
|
// Fields specific to other poTypeId values
|
||||||
@ -99,6 +100,7 @@ function clearCustomPOParam() {
|
|||||||
paymentTermsId: 0,
|
paymentTermsId: 0,
|
||||||
supplierId: 0,
|
supplierId: 0,
|
||||||
supplierName: '',
|
supplierName: '',
|
||||||
|
countryOrigin: '',
|
||||||
deliveryDate: new Date().toISOString().split('T')[0],
|
deliveryDate: new Date().toISOString().split('T')[0],
|
||||||
deliverTo: ''
|
deliverTo: ''
|
||||||
};
|
};
|
||||||
@ -135,6 +137,7 @@ function poDTO(config) {
|
|||||||
DeliverTo = config.deliverTo;
|
DeliverTo = config.deliverTo;
|
||||||
DeliveryDate = config.deliveryDate;
|
DeliveryDate = config.deliveryDate;
|
||||||
ItemName = config.itemName;
|
ItemName = config.itemName;
|
||||||
|
CountryOrigin = config.countryOrigin;
|
||||||
Specification = config.specification;
|
Specification = config.specification;
|
||||||
Qty = config.qty;
|
Qty = config.qty;
|
||||||
UOMName = config.uomName;
|
UOMName = config.uomName;
|
||||||
@ -116,8 +116,8 @@ $(document).ready(function () {
|
|||||||
},
|
},
|
||||||
{ data: 'itemNo' },
|
{ data: 'itemNo' },
|
||||||
{ data: 'itemName' },
|
{ data: 'itemName' },
|
||||||
|
{ data: 'itemDescription' },
|
||||||
{ data: 'itemCategoryName' },
|
{ data: 'itemCategoryName' },
|
||||||
{ data: 'prTypeId' },
|
|
||||||
{ data: 'qty' },
|
{ data: 'qty' },
|
||||||
{
|
{
|
||||||
data: null,
|
data: null,
|
||||||
@ -139,22 +139,11 @@ $(document).ready(function () {
|
|||||||
var cartItemCount = data.cartItemCount;
|
var cartItemCount = data.cartItemCount;
|
||||||
var itemCount = parseInt(cartItemCount, 10);
|
var itemCount = parseInt(cartItemCount, 10);
|
||||||
|
|
||||||
var prTypeIdCell = $('td:eq(4)', row);
|
|
||||||
var PRTypeId = prTypeIdCell.text();
|
|
||||||
var PRTypeIdNumer = parseInt(PRTypeId, 10);
|
|
||||||
|
|
||||||
if (!isNaN(itemCount)) {
|
if (!isNaN(itemCount)) {
|
||||||
$('#cartCount').text(itemCount);
|
$('#cartCount').text(itemCount);
|
||||||
} else {
|
} else {
|
||||||
$('#cartCount').text('0');
|
$('#cartCount').text('0');
|
||||||
}
|
}
|
||||||
if (!isNaN(PRTypeIdNumer)) {
|
|
||||||
if (PRTypeIdNumer === 1) {
|
|
||||||
prTypeIdCell.text('Goods').addClass('next-facilitator');
|
|
||||||
} else {
|
|
||||||
prTypeIdCell.text('Service').addClass('next-facilitator');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
order: [[0, 'desc']],
|
order: [[0, 'desc']],
|
||||||
@ -59,9 +59,11 @@ async function fetchAndPopulatePOFormData(poType, poId = null) {
|
|||||||
$('#deliverTo').val(d.header.deliverTo || '');
|
$('#deliverTo').val(d.header.deliverTo || '');
|
||||||
|
|
||||||
$('#piNo').val(d.header.profInvoiceNo || '');
|
$('#piNo').val(d.header.profInvoiceNo || '');
|
||||||
|
$('#countryOrigin').val(d.header.countryOrigin || '');
|
||||||
$('#currencyCER').val(d.header.currencyCER || '59.00');
|
$('#currencyCER').val(d.header.currencyCER || '59.00');
|
||||||
$('#podId').val(d.header.podId || 0);
|
$('#podId').val(d.header.podId || 0);
|
||||||
$('#shippingInstructionId').val(1);
|
console.log('shipping Instruction', d.header.shippingInstructionId);
|
||||||
|
$('#shippingInstructionId').val(d.header.shippingInstructionId);
|
||||||
$('#discount').val(d.header.discount || 0);
|
$('#discount').val(d.header.discount || 0);
|
||||||
|
|
||||||
$('#C-paymentTerms').val(d.header.paymentTerms || '');
|
$('#C-paymentTerms').val(d.header.paymentTerms || '');
|
||||||
@ -98,9 +100,13 @@ async function fetchAndPopulatePOFormData(poType, poId = null) {
|
|||||||
'<td style="display: none;">' + charge.otherChargesId + '</td>' +
|
'<td style="display: none;">' + charge.otherChargesId + '</td>' +
|
||||||
'<td>' + charge.otherChargesName + '</td>' +
|
'<td>' + charge.otherChargesName + '</td>' +
|
||||||
'<td>' + charge.amount + '</td>' +
|
'<td>' + charge.amount + '</td>' +
|
||||||
'<td><button class="btn btn-default" onclick="removeRow(this)" data-otherChargesId="' + charge.otherChargesId + '">' +
|
'<td>' +
|
||||||
'<i class="fa-solid fa-trash fa-xl" style="color: #ff0000;" aria-hidden="true"></i>' +
|
'<button class="btn btn-default btn-trash-sm" ' +
|
||||||
'</button></td>' +
|
'onclick="removeRow(this)" ' +
|
||||||
|
'data-otherChargesId="' + charge.otherChargesId + '">' +
|
||||||
|
'<i class="fa-regular fa-trash-can" style="color: #ff0000;" aria-hidden="true"></i>' +
|
||||||
|
'</button>' +
|
||||||
|
'</td>' +
|
||||||
'</tr>';
|
'</tr>';
|
||||||
$tbody.append(newRow);
|
$tbody.append(newRow);
|
||||||
});
|
});
|
||||||
@ -24,8 +24,8 @@
|
|||||||
function renderDelItem(data, row) {
|
function renderDelItem(data, row) {
|
||||||
var jsonData = JSON.stringify(row).replace(/"/g, """);
|
var jsonData = JSON.stringify(row).replace(/"/g, """);
|
||||||
var buttonsHtml = '';
|
var buttonsHtml = '';
|
||||||
buttonsHtml += '<button onclick="removeRowMain(' + jsonData + ')" class="btn btn-default">' +
|
buttonsHtml += '<button onclick="removeRowMain(' + jsonData + ')" class="btn btn-default btn-trash-sm">' +
|
||||||
'<i class="fa-solid fa-trash fa-xl" style="color: #ff0000;" aria-hidden="true"></i>' +
|
'<i class="fa-regular fa-trash-can" style="color: #ff0000;" aria-hidden="true"></i>' +
|
||||||
'</button > ';
|
'</button > ';
|
||||||
return buttonsHtml;
|
return buttonsHtml;
|
||||||
}
|
}
|
||||||
@ -237,6 +237,7 @@ function postPutCustomPO() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let Discount = $('#discount').val();
|
let Discount = $('#discount').val();
|
||||||
|
|
||||||
showConfirmation({
|
showConfirmation({
|
||||||
title: 'Create Purchase Order',
|
title: 'Create Purchase Order',
|
||||||
message: 'Are you sure you want to create this PO? This action cannot be undone.',
|
message: 'Are you sure you want to create this PO? This action cannot be undone.',
|
||||||
@ -249,7 +250,7 @@ function postPutCustomPO() {
|
|||||||
url: endpoint.PostPutCustomPO,
|
url: endpoint.PostPutCustomPO,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: {
|
data: {
|
||||||
DocRequiredList, OtherChargesList, PRItemList,
|
DocRequiredList, OtherChargesList, PRItemList, CountryOrigin,
|
||||||
POTypeId, PONo, IncotermsId, ProfInvoiceNo, ProfInvoiceDate,
|
POTypeId, PONo, IncotermsId, ProfInvoiceNo, ProfInvoiceDate,
|
||||||
ShippingInstructionId, PodId, PaymentTermsId,
|
ShippingInstructionId, PodId, PaymentTermsId,
|
||||||
PoRemarks, Discount, SupplierId, DeliveryDate, DeliverTo
|
PoRemarks, Discount, SupplierId, DeliveryDate, DeliverTo
|
||||||
@ -290,7 +291,8 @@ function updateExistingPO() {
|
|||||||
}
|
}
|
||||||
let Discount = $('#discount').val();
|
let Discount = $('#discount').val();
|
||||||
let IsUpdate = true;
|
let IsUpdate = true;
|
||||||
|
console.log('Discount', Discount);
|
||||||
|
console.log('countryOrigin', CountryOrigin);
|
||||||
showConfirmation({
|
showConfirmation({
|
||||||
title: 'Update Purchase Order',
|
title: 'Update Purchase Order',
|
||||||
message: 'Are you sure you want to update this PO? This action cannot be undone.',
|
message: 'Are you sure you want to update this PO? This action cannot be undone.',
|
||||||
@ -303,7 +305,7 @@ function updateExistingPO() {
|
|||||||
url: endpoint.PostPutCustomPO,
|
url: endpoint.PostPutCustomPO,
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
data: {
|
data: {
|
||||||
DocRequiredList, OtherChargesList, PRItemList,
|
DocRequiredList, OtherChargesList, PRItemList, CountryOrigin,
|
||||||
POTypeId, PONo, IncotermsId, ProfInvoiceNo, ProfInvoiceDate,
|
POTypeId, PONo, IncotermsId, ProfInvoiceNo, ProfInvoiceDate,
|
||||||
ShippingInstructionId, PodId, PaymentTermsId,
|
ShippingInstructionId, PodId, PaymentTermsId,
|
||||||
PoRemarks, Discount, SupplierId, DeliveryDate, DeliverTo, IsUpdate
|
PoRemarks, Discount, SupplierId, DeliveryDate, DeliverTo, IsUpdate
|
||||||
@ -136,6 +136,7 @@ function viewPOFormImport(data, isModal) {
|
|||||||
|
|
||||||
document.getElementById('poNo-C-2ndPage').innerHTML = data.poNo;
|
document.getElementById('poNo-C-2ndPage').innerHTML = data.poNo;
|
||||||
document.getElementById('supplier-C-2ndPage').innerHTML = data.supplierName;
|
document.getElementById('supplier-C-2ndPage').innerHTML = data.supplierName;
|
||||||
|
document.getElementById('countryOrigin-C-2ndPage').innerHTML = data.countryOrigin;
|
||||||
|
|
||||||
tableElement = $('#ImportPODataTable');
|
tableElement = $('#ImportPODataTable');
|
||||||
if (isModal == 1) {
|
if (isModal == 1) {
|
||||||
@ -443,7 +444,7 @@ function viewManualImport(data) {
|
|||||||
|
|
||||||
document.getElementById('poNo-C-2ndPage').innerHTML = data.poNo;
|
document.getElementById('poNo-C-2ndPage').innerHTML = data.poNo;
|
||||||
document.getElementById('supplier-C-2ndPage').innerHTML = data.supplierName;
|
document.getElementById('supplier-C-2ndPage').innerHTML = data.supplierName;
|
||||||
|
document.getElementById('countryOrigin-C-2ndPage').innerHTML = data.countryOrigin;
|
||||||
tableElement = $('#ImportPODataTable');
|
tableElement = $('#ImportPODataTable');
|
||||||
if (!tableElement.length) {
|
if (!tableElement.length) {
|
||||||
console.error("Table element not found");
|
console.error("Table element not found");
|
||||||
|
|||||||
@ -64,6 +64,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function populatePOModificationForm(id) {
|
async function populatePOModificationForm(id) {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
console.warn("No PO Type selected.");
|
console.warn("No PO Type selected.");
|
||||||
|
|||||||
@ -137,8 +137,9 @@ function rowImportPOCallback(row, data) {
|
|||||||
document.getElementById('shippingInstruction').innerText = data.shippingInstruction;
|
document.getElementById('shippingInstruction').innerText = data.shippingInstruction;
|
||||||
document.getElementById('profInvoiceNo').innerText = data.profInvoiceNo;
|
document.getElementById('profInvoiceNo').innerText = data.profInvoiceNo;
|
||||||
|
|
||||||
//document.getElementById('poNo-C-2ndPage').innerText = data.poNo;
|
document.getElementById('poNo-C-2ndPage').innerHTML = data.poNo;
|
||||||
//document.getElementById('supplier-C-2ndPage').innerText = data.supplierName;
|
document.getElementById('supplier-C-2ndPage').innerHTML = data.supplierName;
|
||||||
|
document.getElementById('countryOrigin-C-2ndPage').innerHTML = data.countryOrigin;
|
||||||
|
|
||||||
document.getElementById('preparedBy').innerText = data.purchaseBy;
|
document.getElementById('preparedBy').innerText = data.purchaseBy;
|
||||||
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
.modern-button {
|
|
||||||
width: 150px; /* Adjust the width as needed */
|
|
||||||
padding: 10px 20px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 25px;
|
|
||||||
font-size: 16px;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: background-color 0.3s ease, box-shadow 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modern-button:hover {
|
|
||||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-success {
|
|
||||||
background-color: #28a745;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-success:hover {
|
|
||||||
background-color: #006400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-warning {
|
|
||||||
background-color: #ffc107;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.custom-modal-PR-List {
|
|
||||||
max-width: 1320px !important;
|
|
||||||
margin: 0 auto;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-warning:hover {
|
|
||||||
background-color: #ff8c00;
|
|
||||||
}
|
|
||||||
.text-left {
|
|
||||||
text-align: left !important;
|
|
||||||
}
|
|
||||||
.charges-right-align {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.table-dest-container {
|
|
||||||
height: 150px; /* Adjust height as needed */
|
|
||||||
overflow-y: auto; /* Enables scrolling if content overflows */
|
|
||||||
border: 1px solid #ddd; /* Optional: adds a border for visibility */
|
|
||||||
}
|
|
||||||
|
|
||||||
#DestChargesTable {
|
|
||||||
min-height: 150px; /* Ensures the table always has a fixed space */
|
|
||||||
}
|
|
||||||
.responsive-input {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 550px;
|
|
||||||
min-width: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.responsive-input {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 300px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 480px) {
|
|
||||||
.responsive-input {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 200px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
128
CPRNIMS.WebApps/wwwroot/css/PO/CustomPOV3.css
Normal file
128
CPRNIMS.WebApps/wwwroot/css/PO/CustomPOV3.css
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
:root {
|
||||||
|
--teal: #01696f;
|
||||||
|
--teal-hover: #0c4e54;
|
||||||
|
--teal-dark: #054e53;
|
||||||
|
--teal-bg: #edf6f6;
|
||||||
|
--teal-border: rgba(1,105,111,0.18);
|
||||||
|
--green: #437a22;
|
||||||
|
--green-bg: #f2f7ee;
|
||||||
|
--surface: #fff;
|
||||||
|
--surface-2: #f7f9f9;
|
||||||
|
--border: rgba(0,0,0,0.10);
|
||||||
|
--text: #1a2e30;
|
||||||
|
--muted: #5a7476;
|
||||||
|
--faint: #9ab4b6;
|
||||||
|
--radius: 6px;
|
||||||
|
--radius-lg: 10px;
|
||||||
|
--shadow: 0 2px 8px rgba(1,105,111,0.10);
|
||||||
|
--fs: 11.5px;
|
||||||
|
--lh: 1.4;
|
||||||
|
--transition: 150ms cubic-bezier(.16,1,.3,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modern-button {
|
||||||
|
width: 150px; /* Adjust the width as needed */
|
||||||
|
padding: 10px 20px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s ease, box-shadow 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modern-button:hover {
|
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-success {
|
||||||
|
background-color: #28a745;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-success:hover {
|
||||||
|
background-color: #006400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-warning {
|
||||||
|
background-color: #ffc107;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.custom-modal-PR-List {
|
||||||
|
max-width: 1320px !important;
|
||||||
|
margin: 0 auto;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-warning:hover {
|
||||||
|
background-color: #ff8c00;
|
||||||
|
}
|
||||||
|
.text-left {
|
||||||
|
text-align: left !important;
|
||||||
|
}
|
||||||
|
.charges-right-align {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.table-dest-container {
|
||||||
|
height: 150px; /* Adjust height as needed */
|
||||||
|
overflow-y: auto; /* Enables scrolling if content overflows */
|
||||||
|
border: 1px solid #ddd; /* Optional: adds a border for visibility */
|
||||||
|
}
|
||||||
|
|
||||||
|
#DocRequiredTable tbody td {
|
||||||
|
padding-top: 1px !important;
|
||||||
|
padding-bottom: 1px !important;
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
line-height: 1 !important;
|
||||||
|
font-size: 12px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
/* Body rows only */
|
||||||
|
#SourceChargesTable tbody td {
|
||||||
|
padding-top: 1px !important;
|
||||||
|
padding-bottom: 1px !important;
|
||||||
|
padding-left: 6px;
|
||||||
|
padding-right: 6px;
|
||||||
|
line-height: 1 !important;
|
||||||
|
font-size: 12px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.btn-choose {
|
||||||
|
background: var(--teal);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 8px 14px;
|
||||||
|
font-size: var(--fs);
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-choose:hover {
|
||||||
|
background: var(--teal-hover);
|
||||||
|
}
|
||||||
|
/* Keep header normal */
|
||||||
|
#SourceChargesTable thead th {
|
||||||
|
padding: 4px 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.responsive-input {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 550px;
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.responsive-input {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.responsive-input {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
CPRNIMS.WebApps/wwwroot/css/UserManagement/User.css
Normal file
23
CPRNIMS.WebApps/wwwroot/css/UserManagement/User.css
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
@keyframes slideUp {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px) scale(.97);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes toastIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(12px);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -63,8 +63,9 @@ table.dataTable tbody tr {
|
|||||||
|
|
||||||
table.dataTable tbody td {
|
table.dataTable tbody td {
|
||||||
border-bottom: 1px solid rgba(0, 150, 136, 0.08) !important;
|
border-bottom: 1px solid rgba(0, 150, 136, 0.08) !important;
|
||||||
padding: 12px !important;
|
padding: 6px !important;
|
||||||
font-size: 13.5px;
|
line-height: 1 !important;
|
||||||
|
font-size: 12px;
|
||||||
color: #2d2d2d;
|
color: #2d2d2d;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
@ -84,7 +85,6 @@ table.dataTable thead th {
|
|||||||
border-right: 1px solid rgba(255,255,255,0.12) !important;
|
border-right: 1px solid rgba(255,255,255,0.12) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sort icons */
|
|
||||||
table.dataTable thead th.sorting::before,
|
table.dataTable thead th.sorting::before,
|
||||||
table.dataTable thead th.sorting::after,
|
table.dataTable thead th.sorting::after,
|
||||||
table.dataTable thead th.sorting_asc::before,
|
table.dataTable thead th.sorting_asc::before,
|
||||||
@ -93,7 +93,6 @@ table.dataTable thead th {
|
|||||||
opacity: 1 !important;
|
opacity: 1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove default border between header cells */
|
|
||||||
table.dataTable thead th:not(:last-child) {
|
table.dataTable thead th:not(:last-child) {
|
||||||
border-right: 1px solid rgba(255,255,255,0.15) !important;
|
border-right: 1px solid rgba(255,255,255,0.15) !important;
|
||||||
}
|
}
|
||||||
@ -111,9 +110,9 @@ table.dataTable thead th {
|
|||||||
.form-floating .bi-question-circle {
|
.form-floating .bi-question-circle {
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
color: #6c757d;
|
color: #6c757d;
|
||||||
z-index: 9999 !important; /* higher than modal */
|
z-index: 9999 !important;
|
||||||
font-size: 0.9rem; /* make it cleaner */
|
font-size: 0.9rem;
|
||||||
opacity: 1 !important; /* ensure visible */
|
opacity: 1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-floating .bi-question-circle:hover {
|
.form-floating .bi-question-circle:hover {
|
||||||
Loading…
Reference in New Issue
Block a user