Eje!!! que tal compañero... Bueno solo haces una pequeña descripcion de las tablas por lo que no se te puede dar una ayuda especifica, es decir decirte exactamente que insert debes hacer y al parecer no tienes mucha experiencia programando estos tipos de transacciones ya que tu pregunta es algo elemental. Bueno supongo que toda la transacción la haces en una pantalla de ingreso de factura de compra, tienes que hacer un begintrans a la conexion ya que vas a realizar algunos insert y update y si algo sale mal te tendrás que ir por el ON ERROR GO TO... y hacer un rollback. Si has programado en .net o en java lo del on error equivale al try/cath.
Seria que describas las tablas con las primary key y foreign key para poder ayudarte mejor