nadim
Forum Replies Created
-
Pat,
Global/Certification does not has an STD form that prints parts. So I assume that you are using your own customised form. If that is the case then it would a form issue.
Nadim.
-
Jens,
This is pulling from WO/WP Header Due Date.
Nadim.
-
Which event would that be and what is the error message? Normally the EMGR events will only write to an Oracle directory on the Oracle server.
Try using just the file name in the Parameter and then check D:QuantumDBdatabaseils_export on the server. This is usually the default path.
-
Nadim Ghazzaoui
Member10/02/2017 at 8:47 AM in reply to: SETTING DEFAULT PRINTER FOR A CRYSTAL REPORTHenrik,
I have done this before for a label printer.
You need to have the printer installed on the machine where Crystal Report Pro is installed. The printer name should be the same as the printer name from where the report will be running. Open the report in question. In Crystal Page Setup make sure that “Optimize for screen” is disabled. Select the printer, click OK and save. Reload the report in Quantum.
That usually does it unless you’re affected by the page orientation bug.
Nadim.
-
james,
Assuming that the PN is in the STOCK_RESERVATIONS sub-report. Try this:
q.Sql.Text := ‘select COMPANY_REF_NUMBER from SO_HEADER where SOH_AUTO_KEY = ‘ + STOCK_RESERVATIONS[‘SOH_AUTO_KEY’] ;
Nadim.
-
Nadim Ghazzaoui
Member09/15/2017 at 4:52 AM in reply to: FORCE A PART TO RECONCILE AS INSPECTED/REPAIRED/OHEDFrom 10.8.3 Release Notes
“MC Default Condition†look up table has been added to the Work Type code. The condition code selected from this table will be applied to the main component upon reconciliation. If the field is not populated, the condition code selected for the Main Component Out default condition code in the Work Order Control Settings will be applied to the main component.” [Enhancement]
-
From 10.9.12 Release Notes:
“If the “Validate Internal Capability†work order control setting is enabled, an Internal Capability Code is now required. Only parts with an Internal Capability Code that is a Repair Vendor Type will be allowed.
When this setting is disabled, no validation of the Internal Capability Code is performed.”
Internal Cap for a part is set in Inventory Management Global/Internal Capabilities.
-
Kelly,
This very normal. What the merge does is change the CMP_AUTO_KEY of all transactions with the old company to the CMP_AUTO_KEY of the merged company.
Nadim.
-
Nadim Ghazzaoui
Member09/09/2017 at 1:38 PM in reply to: FIRST ARTICLE INSPECTION (FAI 9102) PROCESSMark,
I implemented this some years back but only for shop control.
An event manager script would check for parts that qualify for FAI. All FAI items will have their publication status changed to a non-current status. As a result when a WO is created for an item with no current CMM, Quantum will automatically change the WO status to a No CMM blocking status. This will trigger manager alert to send an email to the QA and Shop Manager.
Nadim.
-
The panels should be opened on a single card only.
So you have several cards referencing one or several panels.
Once the panels are ready to be opened you do Global/Access Panel/Create Access Card. This will create a job card for opening the panels.
At this stage the access panels will still show as closed. Once you close the opening panel card then the access panels will show as Open.
I will be at your sister company from Monday. Pass by if you need further help.
-
Also, do you have the dashboard?
At one point, the dashboard was using multiple connections for a single user. It has been fixed since then but you never know.
-
Jesse,
What you need first is to find who/what is using these licenses.
From 10.8, you can use the Connection Dashboard (File/System Options/Connection Dashboard).
This is a great tool that works cross schema. So launching it from any database will allow you to see all Oracle connections.
It is also a good tool for troubleshooting slow downs as it will inform you which user has hanged the system.
Nadim.
-
Duane,
Leases are SO Sales with an extra table being the LEASE_HEADER.
LEASE_HEADER is linked to SO_DETAIL using the LSH_AUTO_KEY.
This view may also help:
SELECT * FROM VIEW_SPB_SO_LEASE_DETAIL WHERE LSH_AUTO_KEY IS NOT NULL
Nadim.
-
Nadim Ghazzaoui
Member07/01/2017 at 8:57 AM in reply to: IMAGES REPORT- CONNECT TO SOURCE_TABLE, SOURCE_PKMike,
I don’t think you can automate this.
For starters the column names are different. So you would have a single report column called “Transaction #†that contains PO_NUMBER, SO_NUMBER, INVC_NUMBER and, for stock, either PN or SL.
You will need to hardcode each transaction type as a single query. Then use UNION ALL to have them in the same SQL statement.
Nadim.
-
I have written a Quantum helper application for Atlas Air Service. This is what it does:
A predefined Quantum trigger such as a WP Status will launch the functionality
All the images attached to issued stocklines will be merged into a single pdf file.
Each page of the pdf file will have the WP Number, Sequence and CAMP Task Number in its header
A bookmark table will be created using the sequence number and part number.
Finally the merged pdf document will be attached to the Work Pack.
This single pdf file that groups all images can be printed and/or given to the customer.
For references, feel free to contact Jens-Uwe at Atlas Air Service. He’s in the QUE directory. AAS has been using the pdf functionality since February. On major checks it saves them a few hours. It has been very stable.
Email me if you need a quotation or if you have questions.
-
Your code is correct. It is not working because the data pipe is linked to the aircraft timelife and not to the component timelife. CC sometimes works in mysterious ways.
To get the linked component timelife then you need to put the timelife textboxes in a region and then use the code below in the OnPrint of the region
var
q: TOracleDataset;
begin
q := TOracleDataset.Create(nil);
q.SetSession;
q.sql.text := ‘SELECT * FROM TIMELIFE WHERE stm_auto_key = ‘ +
‘(SELECT stm_auto_key FROM STOCK_RESERVATIONS WHERE woo_auto_key = ‘ +
WO_OPERATION[‘WOO_AUTO_KEY’] + ‘) ORDER BY tim_auto_key DESC’;
q.open;
if Not q.EOF then
begin
if q.fieldbyName[‘TIME_SINCE_NEW’].asString = ” then varTSN.Text := ‘UNK’
else varTSN.text := q.fieldbyName[‘TIME_SINCE_NEW’].asString;
if q.fieldbyName[‘TIME_SINCE_OVHL’].asString = ” then varTSO.Text := ‘UNK’
else varTSO.text := q.fieldbyName[‘TIME_SINCE_OVHL’].asString;
if q.fieldbyName[‘CYCLE_SINCE_NEW’].asString = ” then varCSN.Text := ‘UNK’
else varCSN.text := q.fieldbyName[‘CYCLE_SINCE_NEW’].asString;
if q.fieldbyName[‘CYCLE_SINCE_OVHL’].asString = ” then varCSO.Text := ‘UNK’
else varCSO.text := q.fieldbyName[‘CYCLE_SINCE_OVHL’].asString;
end
else begin
varTSN.Text := ‘UNK’;
varTSO.Text := ‘UNK’;
varCSN.Text := ‘UNK’;
varCSO.Text := ‘UNK’;
end;
q.close;
q.Free;
end;
Note:
If the component has several timelife lines, the code will use the last endtry. If you need the first entry then remove DESC from the order by clause. Also this will only work for the incoming component while it is reserved.
-
Dave,
Most of what you need is already there.
You would need to use the C of C in the Shipping Order (Global/Print/C of C). It should have everything you need except manuals and Block 12.
It even has its own unique numbering log which you can use as the Form Tracking Number. It is the same numbering log used by the Certificate functionality in WO.
For Block 12, I had used the Global Notes. But with some sql, you can still access notes from the WO.
Nadim.
-
Nadim Ghazzaoui
Member06/11/2017 at 12:46 AM in reply to: CREATE SUB WORK ORDERS AND APPLY TEMPLATES AUTOMATICALLYDefault Repair will work only if you are using Master Routers. It will resolve the issue.
-
1- You can use pre-existing templates. The link would be the CAMP Task Number. When you flag cards from a CAMP due list or CAMP WO, the integration will bring in the Work Required, flight hours and component PN (if any) from CAMP into Quantum. If a job card template exists for the CAMP task card then the integration will also add all template items such as BOM, tools, labor, panels, etc…
You can also create/update your templates from CAMP. The integration has a button to add a CAMP task cards as a Quantum job card template. You can then add your own template items.
2- If it is a different schema then you will need to export/import.
3- In Quantum, you have the Aircraft Maintenance dropdown, the Quantum user’s CAMP username/password in Security Management, the CAMP integration flag in the aircraft tail setup. In CAMP for the aircraft, there is a check box that say Allow External Integration. This needs to be checked.
The CAMP dotnet dll’s were updated less than a month ago. Make sure you have the latest in case your Quantum is older.
Finally, you need to request a Quantum username/password from CAMP. This is different from the CAMP username/password. Also request a test aircraft to play with in your training database.
-
lol
I can’t. I have a non-disclosure as per my contract. You will need to send it yourself.
You can send it to Henrik who will then take out your logo before posting it.
-
Hi Ken,
I’m involved with the integration at 4 European CC customers.
What do you need to know?
Nadim.
-
To make the field Description get the data from SDF_PNM_001:
procedure FormShow(Sender: TObject);
begin
form.txtDescription.DataField := ‘SDF_PNM_001’;
end;
-
Brian,
I don’t think you can.
For an existing BOM, to go into Edit mode the user clicks Edit two times.
Behind the scenes, the first edit will take the dataset state into View mode while the second Edit will take the dataset into Update mode.
The problem with this screen is that the screens scripter code is only linked to the first View state. It will execute when the first Edit is clicked. There is no screen scripter linked to the second Edit (update) event.
If my memory serves me right, you already have 3 combo boxes and a textfield that have this problem.
But whatever is entered in the field when the user clicks Edit the first time will not be saved as the form is in View state.
Nadim.
-
Stephen,
Check the user setup. Make sure:
Filter browses based on Geo is unchecked
Department Filter Option set to No Filter
Nadim.
-
Jesse,
This is something I can do but frankly you will be wasting your money. It is cheaper to buy a multi-terrabyte NAS and move everything there.
The forum can help you if you need to know how to change the setup.
Nadim.
-
Vivian,
As John wrote, you can also design it yourself should you have internal knowledge. You can check my presentation from QUE2016 for pointers.
http://quegroup.org/2016CONFPRES
Nadim.
-
Nadim Ghazzaoui
Member04/21/2017 at 2:36 AM in reply to: HOW DO YOU KNOW WHEN A SALES ORDER IS COMPLETE AND READY TO SHIP ?Mike,
In the absence of Event Manager then you will need to rely on manual reporting. The report would compare the sum of all SOD.QTY_ORDERED to the sum of all SOD.QTY_RESERVED for a Sales Order.
Hope this helps.
Nadim.
-
Pam,
Let’s suppose that value checked is ‘T’ and value unchecked is ‘F’.
So when the value of the linked datafield is ‘T’ then the checkbox will be checked and when the value is ‘F’ the field will be unchecked. Anything else including nulls will show as grey.
Because the linked datafield will be empty when creating a new record (i.e. no default value) then it will always show grey.
So you need to put code that will look at the value of the datafield on show. If it is null then make it ‘F’ (unchecked) otherwise leave as is.
Something like:
IF form.Dataset.FieldByName(‘SDF_WQD_001’).AsString = ” THEN
form.Dataset.FieldByName(‘SDF_WQD_001’).AsString := ‘F’;
Nadim.
-
Ab,
If by voided stock you mean Void Receiving then try TRAN_TYPE = ‘Void normal receiving’ in Stock Audit.
Nadim.
-
Your assumptions are correct.
RC is for the Receiving/Inspection Module.
-
Brian,
View VIEW_WOBOM should have everything you need.
So you can start by
SELECT * FROM VIEW_WOBOM WHERE SI_NUMBER = ‘WP3532’
Then trim it down from there.
Nadim.
-
Done it before. This is what you need to do:
Create a subquery that lists all stock movements that happened after the cut-off date using OLD_QTY_OH minus NEW_QTY_OH. Be careful to use the correct TRAN_TYPE.
Union All
Current Stock.
Create a query that will group the subquery above by PNM, STM, Sum(QTY_OH) having qty_oh > 0
Should be it if my memory serves me right.
-
Nadim Ghazzaoui
Member03/23/2017 at 10:44 AM in reply to: ADDING ADDITIONAL CHARGES INTO TOTAL COSTRainier,
There is a functionality that will mark up receipts by a pre-defined percentage. The idea is that a company assesses that freight was for example 2% in the previous year. So for the current year, they would have a 2% markup on all receipts. As for high value parts, there is a flag in Parts Master that excludes them from the markup.
The other way is to add a value to the the freight charge field in the stockline. This is manual.
Nadim.
-
Terri,
Might be an issue with Post Date being null. Try testing first with an INH.POST_STATUS = 3 in the WHERE clause.
If that works then either keep as is or use an NVL for the POST_DATE.
Nadim.
-
You wrote “main work package/order†so I suppose you mean sub-WO.
When released, the sub-WO will go into INV status and not FG. So you can filter by “INVâ€.
But then this sounds too simple therefore probably not what your question is about.
So can you be more specific about your need?
-
Nadim Ghazzaoui
Member03/22/2017 at 2:04 AM in reply to: SEND INVOICE ATTACHED TO SHIPPING STATUS EMAIL ALERTGeo,
There is a separate event that will sent an invoice upon posting. But I suppose that you don’t want to send two emails to the customers.
The invoice will have the AWB in it if it is sent after the shipment is shipped.
Otherwise the invoice posted event can be tweaked to show the AWB number and any other data in the body. This needs a bit of advanced knowedge.
Nadim.
-
Nadim Ghazzaoui
Member03/09/2017 at 8:37 AM in reply to: INCIDENT RELATED FLAG ON STOCK LINES AFTER REPAIRMy first reaction was screen scripter on receiving but it seems that IR is not part of the receiving module.
In any case, once a unit is incident related then it is incident related for life no matter what is done with it. So your requirement should be part of the IR functionality.
-
Nadim Ghazzaoui
Member03/09/2017 at 8:20 AM in reply to: QUERY ALL PARTS ISSUED TO A GIVEN WORK ORDERThis works for Billing Group.
SELECT SI_NUMBER
FROM WO_OPERATION
WHERE WOO_AUTO_KEY =
(SELECT NVL(WOO_REF, WOK_WOO_REF)
FROM WO_QUOTE_DETAIL
WHERE WQD_AUTO_KEY =
(SELECT WQD_AUTO_KEY FROM INVC_DETAIL WHERE IND_AUTO_KEY = 5567
)
)
-
Also:
If using the Publication module, one can assume that all capabilities will have a CMM.
The WO can be setup to automatically warn the user that a CMM does not exist for a particular component. It will also change the WO status to a pre-set status such as “No CMM”. The status can be a Block Activity status or not.
If using Event Manager, one can go a step further and have an email sent to someone when the “No CMM” status is detected. This is a canned event.
-
Nadim Ghazzaoui
Member03/07/2017 at 10:18 PM in reply to: QUERY ALL PARTS ISSUED TO A GIVEN WORK ORDERSeveral tables as in the code below. Just change the SI_NUMBER for your WO Number.
SELECT WOO.SI_NUMBER,
WOT.SEQUENCE,
STM.PN,
STM.DESCRIPTION,
WOB.ACTIVITY,
PCC.CONDITION_CODE,
STI.QTY – STI.QTY_REVERSE QTY_ISSUED,
STM.STOCK_LINE,
STM.SERIAL_NUMBER,
STM.UNIT_COST,
STM.RECEIVER_NUMBER,
STM.REC_DATE
FROM WO_OPERATION WOO,
WO_TASK WOT,
WO_BOM WOB,
STOCK_TI STI,
STOCK STM,
PART_CONDITION_CODES PCC
WHERE WOO.WOO_AUTO_KEY = WOT.WOO_AUTO_KEY
AND WOT.WOT_AUTO_KEY = WOB.WOT_AUTO_KEY
AND WOB.WOB_AUTO_KEY = STI.WOB_AUTO_KEY
AND STI.STM_AUTO_KEY = STM.STM_AUTO_KEY
AND STM.PCC_AUTO_KEY = PCC.PCC_AUTO_KEY
AND STI.TI_TYPE = ‘I’
AND STI.QTY – STI.QTY_REVERSE > 0
AND WOO.SI_NUMBER = ‘W1400363’
ORDER BY STM.PN
-
Nadim Ghazzaoui
Member02/17/2017 at 10:35 AM in reply to: OPEN WO REPORT WITH MAIN COMPONENT STOCK INFOBill,
From your code I suppose you are using the legacy quote/billing back to the SO. I have no experience with this. Usually the WOO_AUTO_KEY will be linked to the SM_HEADER.
But you can also try using WO_STM_COMPLETE table.
This table will contain all reconciled WOOs, whether shipped or not shipped.
If an item is on a shipping order but not shipped then it will not show an SMD_AUTO_KEY.
If the item was shipped then it will show the SMD_AUTO_KEY.
Nadim.
-
Oh my, time for some gobbledegook. I implemented Master Routers in 4 companies but I still cannot explain it in two sentences. I will try.
In its simplest form, you have a product family, e.g. Air Cycle Machine, and they all use the same tasks for a workscope. So this ACM family in the capability list consists of 20 PNs. Each PN has three possible workscopes such as Inspection, Repair and Overhaul.
Without Master Routers, you can create 60 templates (1 template by PN/Workscope) or you can create 20 templates (1 template per PN). In this last case, you will need to have the user select, delete and/or cancel the tasks that are not being used based on the incoming workscope. And then if the incoming workscope is a Repair and the inspection result requires an overhaul then more cancelling/deleting is needed. Same issue if the customer requires an overhaul and the unit is scrap.
With Master Templates, you create 1 single template for the 20 PNs. This is based on the assumption that the skills are the same for each task.
A Master Template may consist of several sub-templates. This is to accommodate resulting inspection result which can be scrap, repair or overhaul.
The Master Template will consist of a default template that is common to all workscopes in addition to additional templates that represent a single workscope.
The default template usually represents the Inspection and can consist of receiving inspection, check and test, quote and shipping.
When the unit comes in, the default template is applied. If the customer requested an Inspection or if the unit is scrap or if the quote is rejected, then that’s the end of it.
If the customer requested an overhaul, the default Inspection template would still be applied on its own. This is because there is a possibility that the unit may be scrap. Master router avoids unnecessarily polluting the WO with tasks you may not use. It pulls tasks on demand.
Otherwise the next step following the Inspection result may be Repair or Overhaul. In this case, by selecting the correct workscope in the WO Header, the master router will pull in the correct tasks.
As for the BOM, this will use the classic template. Each PN will have a single template with a single task e.g.: Assembly.
Now the scenario above is for a product family. That was simple.
Master template can be expanded by using a product family and aircraft model combination. In this case you may have 10 landing gears in your cap list. But the workplan defers based on the aircraft size or model. The tasks will be the same but the estimated labor will be different. The disassembly of a regional aircraft landing gear will require less hours than the disassembly of wide body aircraft landing gear.
And finally you can have a combination of product family, model and ATA Chapter.
In this last and most complicated case, you may have for example a CF6 engine which will have a different workplan based on its configuration (-80A, -80C, with or without QEC). The workplan will be driven by the ATA of the EMM which will be based on a unique configuration. It gets more complicated in engines (and landing gears) because of the amount of sub-WOs. You may have a sub-WO for each engine module (LPC, HPC, HPT, etc…). The module PNs installed will be different based on the engine configuration. But by just selecting the correct PN, Model and ATA at receiving then Quantum will build the correct master router for the engine configuration.
As to the advantages of using master router, you have the weekend to analyse them. 🙂
That’s it in a nutshell.
-
Ab,
It is in IC Forms & Reports/Goods Received.
Nadim.
-
Jeff,
You will need to change the paper orientation and not rotate the fields.
In the form, go to the File Menu and click on Page Setup. Then click on the Paper Size tab. In there you will find the Orientation radio button.
Nadim.
-
Nadim Ghazzaoui
Member02/03/2017 at 12:57 AM in reply to: OPEN WO REPORT WITH MAIN COMPONENT STOCK INFOBill,
Check this view: SELECT * FROM VIEW_SPB_WO_MAINCOMPONENT
It should have all the info you require. If you need more info then link it can be linked to WO_OPERATION, STOCK and STOCK_RESERVATIONS (outer join). Although in the case of STR, I would advise to link through STM and not direct from the view.
PN, SN, STM_AUTO_KEY: Up to reconciliation it will show the incoming unit. After reconciliation it will show the outgoing unit.
STR_AUTO_KEY: Will show as NULL after reconciliation regardless whether the unit has shipped or not.
In the case of an RO on the main component, Quantum will create a new STR_AUTO_KEY for the outgoing RO reservation and yet a third STR_AUTO_KEY for the incoming which will be reserved back to the WO.
The CMP_AUTO_KEY will show the last received company and not the customer. So when there is a main component RO, it will show the vendor. Always use the CMP from WO_OPERATION for customer.
This is an old Firebird view from 2001 migrated to Oracle. So test and doublecheck anything I wrote above as things may have changed.
Hope this helps.
Nadim.
-
Bonjour André,
Your method is what is currently being used. The problem is that there is no link to an SM order. Alonda’s method was also put forward but the CFO turned it down due to SOX regulations the company needs to comply with.
This lack of integration with Shipping Order has been an issue I encountered at several customers. Todd has agreed that it needs to be fixed and has asked Carlo and Nic to look into it. So hopefully it should make it in a release in the next 12 months.
Nadim.
-
Terri,
The barcode data does not contain info on the part number or stockline. The barcode data is the combination of the Ctrl Number – Ctrl ID for a stockline. This is in effect is a unique number that allows Quantum to do a lookup for an STM_AUTO_KEY.
So in your case, scanning the barcode will only display the Ctrl Number – Ctrl ID in Excel. This is unless you customise your label to print the PN and SN in barcode.
Nadim.
-
Terri,
Try the following. It will give you the PN as well as the SL if there are multiple receipts. At the very bottom it is filtered by receive date = sysdate. This is where you would change the filter to suit your need.
Nadim.
SELECT *
FROM (SELECT ‘PO’ TRAN_TYPE,
STM.rec_date,
POH.po_number TRAN_NUMBER,
POD.item_number,
STM.pn,
STM.stock_line
FROM stock STM,
po_detail POD,
po_header POH
WHERE STM.pod_auto_key = POD.pod_auto_key
AND POD.poh_auto_key = POH.poh_auto_key
AND STM.stm_auto_key NOT IN (SELECT source_pk
FROM image_list
WHERE source_table = ‘STOCK’)
UNION ALL
SELECT ‘RO’ TRAN_TYPE,
STM.rec_date,
ROH.ro_number TRAN_NUMBER,
ROD.item_number,
STM.pn,
STM.stock_line
FROM stock STM,
ro_detail ROD,
ro_header ROH
WHERE STM.rod_auto_key = ROD.rod_auto_key
AND ROD.roh_auto_key = ROH.roh_auto_key
AND STM.stm_auto_key NOT IN (SELECT source_pk
FROM image_list
WHERE source_table = ‘STOCK’))
WHERE rec_date = Trunc(SYSDATE)
ORDER BY rec_date,
tran_type,
item_number,
stock_line
-
Gabrielle,
You will need to use a columns alias to name the aggregate sum functions. I called it MySum. You can call it anything. This is the name that would then be used to retrieve the value.
The code below will also format the number so that for example 2.3 appears as 2.30 and 1000 appears as 1,000.00. This will be based on the currency format from your Quantum.
Nadim.
var
qc : TOracleDataset;
v : double;
begin
qc := TOracleDataset.Create(nil);
qc.SetSession;
qc.Sql.text :=’select sum(UNIT_COST*QTY_SHIP) MySum from SO_DETAIL where SOD_AUTO_KEY= ‘ + SO_DETAIL[‘SOD_AUTO_KEY’];
qc.open;
v := qc.fieldbyname[‘MySum’].AsFloat;
text:= FormatFloat(CurrencyFormat, v);
qc.close;
qc.free;
end;
Edit: The sql statement above should appear as one line in forms designer. Otherwise use the plus sign and apostrophe as appropriate.
-
That would defeat the purpose of having BOM in the templates. After all, this is a selling point of Quantum.
To answer your question concerning the BOM, there is no one answer. It al depends on what works best for you.
What is used most often is the Deferred BOM. Meaning that after the check & test is completed and prior to the quote, the user will select the BOM items to add to the WO from a template BOM (Global/Template/Deferred BOM). This means that you do not have to change quantities to zero for parts not being used as they will not be in the WO.
I will dig deeper on the reason your are getting the error message.